У меня есть проблема, я надеюсь, кто-то может помочь с (значительно упрощена в целях объяснения, что я пытаюсь сделать) ...Perl - Проверьте, если какие-либо элементы в каждом другом массиве соответствует переменной
I есть три различных массивов:
my @array1 = ("DOG","CAT","HAMSTER");
my @array2 = ("DONKEY","FOX","PIG", "HORSE");
my @array3 = ("RHINO","LION","ELEPHANT");
у меня также есть переменная, которая содержит контент с веб-страницы (с помощью WWW :: Mechanize):
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
@ysth Ахо какой? Что это на английском? – TLP
алгоритм соответствия, который perl иногда будет использовать для | чередующиеся фиксированные строки; без него, в основном каждый | альтернатива будет проверяться в каждой позиции в строке до тех пор, пока она не будет совпадать. http://en.wikipedia.org/wiki/Aho-Corasick – ysth