local $np; # I added this declaration myself $np = qr{ \{ (?: (?> [^{}]+ ) | (??{ $np }) )* \} }x; #### Use of uninitialized value at shorty.pl line 19 (#1) (W) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign an initial value to your variables. Uncaught exception from user code: / { (?: (?> [^{}]+ ) | (??{ }) )* } /: Sequence (??...) not recognized #### Uncaught exception from user code: / { (?: (?> [^{}]+ ) | (??{ foo }) )* } /: Sequence (??...) not recognized