Perl 条件语句-与数组中存储的值进行比较
需要帮助找出可用的perl代码来代替“数组中的任何元素”吗Perl 条件语句-与数组中存储的值进行比较,perl,conditional,Perl,Conditional,需要帮助找出可用的perl代码来代替“数组中的任何元素”吗 %hash=(key1=>'value1',key2=>'value2',key3=>'value3',); @数组=('value3'、'value4'、'value6'); 如果($hash{'key1'}ne){打印“耶!”;} 您可以使用该功能。以下是一个基本示例: print "YAY!" if grep { $hash{'key1'} eq $_ } @array; 在像这样的标量上下文中,grep将为您提供@array中
%hash=(key1=>'value1',key2=>'value2',key3=>'value3',);
@数组=('value3'、'value4'、'value6');
如果($hash{'key1'}ne){打印“耶!”;}
您可以使用该功能。以下是一个基本示例:
print "YAY!" if grep { $hash{'key1'} eq $_ } @array;
在像这样的标量上下文中,grep将为您提供
@array
中匹配项的数量。如果该值不为零,则有一个匹配项。也可以使用哈希:
@hash{"value3","value4","value6"}=undef;
print "YAY" if exists $hash{key1};
A 5.10+解决方案:使用A
CPAN溶液:使用
为什么要使用这个解决方案而不是替代方案
- 在5.10之前的Perl中无法使用智能匹配
解决方案在整个列表中循环,即使1000000长列表的第一个元素匹配grep
都会在找到第一个匹配项时短路并退出,因此效率更高任何
grep
解决方案在整个列表中循环,即使1000000个长列表的第一个元素匹配。
@hash{"value3","value4","value6"}=undef;
print "YAY" if exists $hash{key1};
say 'Modern Yay!' unless $hash{$key} ~~ @array;
use List::MoreUtils qw{any};
print "YAY!" if any { $hash{'key1'} eq $_ } @array;