我有一个问题,我希望有人能(大大简化解释什么,我试图做的目的)帮助...的Perl - 检查是否在每个不同阵列的所有元素相匹配的可变
我有三种不同的阵列:
my @array1 = ("DOG","CAT","HAMSTER");
my @array2 = ("DONKEY","FOX","PIG", "HORSE");
my @array3 = ("RHINO","LION","ELEPHANT");
我也有一个包含从网页内容的变量(使用WWW ::机械化):
my $variable = $r->content;
我现在想看看是否有任何元素在每个阵列在变量中,如果是这样,其阵列它来源于:
如
if ($variable =~ (any of the elements in @array1)) {
print "FOUND IN ARRAY1";
} elsif ($variable =~ (any of the elements in @array2)) {
print "FOUND IN ARRAY2";
} elsif ($variable =~ (any of the elements in @array3)) {
print "FOUND IN ARRAY3";
}
什么是去这样做使用阵列,通过在每个元素进行迭代的最佳方法数组?有没有更好的办法可以做到这一点?
您的帮助深表感谢,感谢
把\ b放在连接中会禁用aho-corasick匹配,我相信;只要做'\ b(?:$ rx)\ b'而不是 – ysth 2013-04-12 19:47:03
@ysth Aho是什么?那是什么英文? – TLP 2013-04-12 19:49:06
perl有时会用于|的匹配算法交替固定的字符串;没有它,基本上每个|替代方法将在字符串中的每个位置进行尝试,直到匹配成功。 http://en.wikipedia.org/wiki/Aho-Corasick – ysth 2013-04-12 20:33:54