Perl中的运算符~~
是否相反?我用它来匹配数组中的元素:
my @arr = qw /hello ma duhs udsyyd hjgdsh/;
print "is in\n" if ('duhs' ~~ @arr);
这会打印is in
。这很酷,因为我不必迭代所有数组并比较每条记录。我的问题是,如果我没有匹配,我想做点什么。我可以去else
方,但我宁愿找到相反的“~~'
答案 0 :(得分:12)
您还可以使用List::Util
(仅限此模块的较新版本)或any
与none
,use List::Util qw(any none);
my @arr = qw /hello ma duhs udsyyd hjgdsh/;
say "oh hi" if any { $_ eq 'hello' } @arr;
say "no goodbyes?" if none { $_ eq 'goodbye' } @arr;
和朋友一起使用。
{{1}}
虽然不是perl-native,但它不需要实验性的智能匹配。
答案 1 :(得分:9)
除非==如果不是
print "is not in\n" unless ('duhs' ~~ @arr);
注意:智能匹配在perl 5.18+中是实验性的。请参阅Smart matching is experimental/depreciated in 5.18 - recommendations?所以请改用以下内容:
print "is not in\n" unless grep { $_ eq 'duhs' } @arr;