in reply to Why this regexp doesn't match nested parens?

You also fall prey to using a my() variable in the same line that you declared it:
use strict; use warnings; # DON'T turn off the uninit warning my $x = qr/(a(??{$x})?b)/; print "x1($1)\n" if "alphabet" =~ $x; print "x2($1)\n" if "caaabbbc" =~ $x; my $y; $y = qr/(a(??{$y})?b)/; print "y1($1)\n" if "alphabet" =~ $y; print "y2($1)\n" if "caaabbbc" =~ $y; __END__ output: Use of uninitialized value in pattern match (m//) at rx line 2. x1(ab) x2(ab) y1(ab) y2(aaabbb)
See? The $x regex is looking for $main::x (although it doesn't give you a strict-breakage, since it's not looking for package names in the code that handles (??{ })), and it's empty, so you get a warning.

Take out the \A anchor, but also declare the variable first and then assign to it.

_____________________________________________________
Jeff[japhy]Pinyan: Perl, regex, and perl hacker, who'd like a job (NYC-area)
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;

Replies are listed 'Best First'.
Re: Re: Why this regexp doesn't match nested parens?
by ccn (Vicar) on Apr 26, 2004 at 16:53 UTC
    Thanks, japhy, you are right