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中

需要帮助找出可用的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{"value3","value4","value6"}=undef;
print "YAY" if exists $hash{key1};
A 5.10+解决方案:使用A

CPAN溶液:使用

为什么要使用这个解决方案而不是替代方案

  • 在5.10之前的Perl中无法使用智能匹配

  • grep
    解决方案在整个列表中循环,即使1000000长列表的第一个元素匹配
    任何
    都会在找到第一个匹配项时短路并退出,因此效率更高


警告:
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;