gpt4 book ai didi

regex - Perl:查找变量的值是否与数组中的值匹配

转载 作者:行者123 更新时间:2023-12-04 09:03:01 25 4
gpt4 key购买 nike

我是一个 perl 新手。我有一个代码,其中一个变量在 foreach 循环中加载了多个值。我想要做的是仅当它在该数组中时对该变量执行一些操作。什么是最高效 在 perl 中执行此操作的方法,因为我正在处理的数据非常大。

我的问题的一个简单例子是,假设我有一系列我想要的水果

@fruits_i_like = qw (mango banana apple);

但是我在 foreach 循环中有一个 $fruit 变量,它从包含所有不同类型水果的数据文件中获取水果的名称。我将如何只选择@fruits_i_like 数组中的那些 $fruit 案例?

最佳答案

Perl 5.10 或更高版本?

use strict;
use warnings;
use 5.10.0;
my @fruits_i_like = qw/mango banana apple/;
my $this_fruit = 'banana';
if ( $this_fruit ~~ \@fruits_i_like ) {
say "yummy, I like $this_fruit!";
}

5.10 之前:
use strict;
use warnings;
my @fruits_i_like = qw/mango banana apple/;
my $this_fruit = 'banana';
if ( scalar grep $this_fruit eq $_, @fruits_i_like ) {
print "yummy, I like $this_fruit!\n";
}

缺点是解析整个数组以查找匹配项。这可能不是最佳选择,在这种情况下,您可以使用 List::MoreUtils ' any() , 一旦它匹配一个值就返回 true 并且不会继续遍历数组。
use strict;
use warnings;
use List::MoreUtils qw/any/;
my @fruits_i_like = qw/mango banana apple/;
my $this_fruit = 'banana';
if ( any { $this_fruit eq $_ } @fruits_i_like ) {
print "yummy, I like $this_fruit!\n";
}

快乐黑客!

关于regex - Perl:查找变量的值是否与数组中的值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4051346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com