my $str=" some stuff then foo then bar then more stuff"; print "string=\"$str\"\n"; if ($str =~ /(?!.*foo)(^.*bar.*)/) {print "1 matched \"$1\"\n";} if ($str =~ /(?!^.*foo)(^.*bar.*)/) {print "2 matched \"$1\"\n";} if ($str =~ /(?!.*foo)(.*bar.*)/) {print "3 matched \"$1\"\n";} if ($str =~ /(?!^.*foo)(.*bar.*)/) {print "4 matched \"$1\"\n";} $str=" some stuff then bar then more stuff"; print "string=\"$str\"\n"; if ($str =~ /(?!.*foo)(^.*bar.*)/) {print "5 matched \"$1\"\n";} if ($str =~ /(?!^.*foo)(^.*bar.*)/) {print "6 matched \"$1\"\n";} if ($str =~ /(?!.*foo)(.*bar.*)/) {print "7 matched \"$1\"\n";} if ($str =~ /(?!^.*foo)(.*bar.*)/) {print "8 matched \"$1\"\n";}