while ("this_is_broken_" =~ /(.*?)_/gs) { print "($1) "; } #### (it just matched "this") Match successful! Guessing start of match, REx `(.*?)_' against `is_broken_'... Not at start... Match rejected by optimizer