in reply to Backreference variables in code embedded inside Perl 5.10 regexps
oruse strict; use warnings; sub parser { local our @stack; local our @rv; my $parser = qr{ ^ (?&expr) (?&expr) \z (?{ @rv = @stack; }) (?(DEFINE) (?<expr> (?<i> . ) (?<i> . ) (?{ local @stack = ( @stack, $-{i}[0] . '|' . $-{i}[1] + ); }) ) ) }x; return $_[0] =~ /$parser/ && \@rv; } my $rv = parser('abcd'); print("$_\n") for @$rv;
use strict; use warnings; sub parser { local our @stack; local our @rv; my $parser = qr{ ^ (?&expr) (?&expr) \z (?{ @rv = @stack; }) (?(DEFINE) (?<expr> (?<i> . ) (?<j> . ) (?{ local @stack = ( @stack, $+{i} . '|' . $+{j} ); }) ) ) }x; return $_[0] =~ /$parser/ && \@rv; } my $rv = parser('abcd'); print("$_\n") for @$rv;
|
|---|