Mark, The code you gave: #!/usr/bin/perl -w $z = ("xf" =~ m{^ (?{print "!!!\n"}) ( ( (?!foo$ ) . ) (?{print "$2 "}) * ) $ }x); print "$z\n"; now emits a warning (in 5.6-RC2): > (?{print "$2 "}) > * > matches null string many times at /tmp/asdf line 13. I don't know whether this helps your code or reflects a different bug :-) NatThread Next