c:\@Work\Perl\monks>perl -wMstrict -le "my @stopwords= qw(a the of); my ($stopper) = map qr{ (?i) $_ }xms, join q{ | }, reverse sort map quotemeta, @stopwords ; print $stopper; ;; my $l_bound = qr{ \A }xms; my $r_bound = qr{ \z }xms; ;; for my $string ( 'of sky blue', 'all blue of', 'out of blue', @ARGV, ) { printf qq{'$string' }; if ($string =~ m{ $l_bound $stopper | $stopper $r_bound }xms) { print 'has stopper pattern'; } else { print 'has no stopper'; } } " of the a off and (?^msx: (?i) the | of | a ) 'of sky blue' has stopper pattern 'all blue of' has stopper pattern 'out of blue' has no stopper 'of' has stopper pattern 'the' has stopper pattern 'a' has stopper pattern 'off' has stopper pattern 'and' has stopper pattern