我有一個問題,我希望有人能(大大簡化解釋什麼,我試圖做的目的)幫助...的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