928/zoid/0$ perl -le 'print "($1) " while "this_is_broken_" =~ /(.*?)_/gs' (this) 929/zoid/0$ perl -mre=debug -le 'print "($1) " while "this_is_broken_" =~ /(.*?)_/gs' Freeing REx: `,' Compiling REx `(.*?)_' size 10 first at 5 1: OPEN1(3) 3: MINMOD(4) 4: STAR(6) 5: SANY(0) 6: CLOSE1(8) 8: EXACT <_>(10) 10: END(0) floating `_' at 0..2147483647 (checking floating) anchored(SBOL) implicit minlen 1 Guessing start of match, REx `(.*?)_' against `this_is_broken_'... Found floating substr `_' at offset 4... Guessed: match at offset 0 Matching REx `(.*?)_' against `this_is_broken_' Setting an EVAL scope, savestack=9 0 <> | 1: OPEN1 0 <> | 3: MINMOD 0 <> | 4: STAR Setting an EVAL scope, savestack=9 0 <> | 6: CLOSE1 0 <> | 8: EXACT <_> failed... SANY can match 1 times out of 1... 1 | 6: CLOSE1 1 | 8: EXACT <_> failed... SANY can match 1 times out of 1... 2 | 6: CLOSE1 2 | 8: EXACT <_> failed... SANY can match 1 times out of 1... 3 | 6: CLOSE1 3 | 8: EXACT <_> failed... SANY can match 1 times out of 1... 4 <_is_brok> | 6: CLOSE1 4 <_is_brok> | 8: EXACT <_> 5 | 10: END Match successful! (this) Guessing start of match, REx `(.*?)_' against `is_broken_'... Not at start... Match rejected by optimizer Freeing REx: `(.*?)_' 930/zoid/0$ perl -v This is perl, v5.6.1 built for i386-linux