#!perl -w use strict; my @patterns = ('B.B', 'CB'); # join the patterns to do one match per string my $pat = join '|',@patterns; foreach my $string ('ABCBXBCA','APCBXBCAC') { if($string =~ /($pat)/o) { # then do a pattern lookup to see which pattern matched. my $matched; foreach my $p (@patterns) { if ($1 =~ /$p/) { $matched = $p; last; } } print "String:$string Pattern:$matched KeyWord:$` \n"; } }