in reply to Matching arrays with different number of elements and element size
Depending on whether regex matching is appropriate for what you are trying to do, you might want to check out my tutorial Building Regex Alternations Dynamically.
use warnings; use strict; use Data::Dump qw/pp/; my @needles = ('adam west', 'daric dalon','tom helic','todd nick', 'riley remer'); my @haystack = ('adam west 12', 'daric dalon mr.','tom helic (fads)', 'todd nick (456)','riley remer','john steve','dim madz 12'); my ($needle_regex) = map { qr/$_/i } join '|', map {quotemeta} sort { length $b <=> length $a or $a cmp $b } @needles; for my $str (@haystack) { if ( my ($match) = $str=~/($needle_regex)/ ) { print pp($str)," matches on ",pp($match),"\n" } else { print pp($str)," doesn't match\n" } } __END__ "adam west 12" matches on "adam west" "daric dalon mr." matches on "daric dalon" "tom helic (fads)" matches on "tom helic" "todd nick (456)" matches on "todd nick" "riley remer" matches on "riley remer" "john steve" doesn't match "dim madz 12" doesn't match
|
|---|