Ack. I guess spending two days trying to grok
yacc and Parse::Yapp led me to choose to do it
the hard way. Thanks for a healthy does of simplicity.
Unfortunately, the following regexp break your very good idea:
$regex = qr/foo/; # should return 0
That only means your code needs at least one capture:
sub captures {
my $re = shift;
return scalar ( @_ = '' =~ /(?:($re))?/ ) - 1;
}
This passes my whole test suite, expect for this regexp:
$regex = qr/(?x) # (comment)
(?-x) # (capture) (?x) # (comment)/;
Which dies horribly with the message:
Unmatched ( in regex; marked by <-- HERE in m/(?:(( <-- HERE ?-xism:(?x) # (comment)
(?-x) # (capture) (?x) # (comment))))?/
So, $regex compiles, but qr/(?:($regex))?/ doesn't? I'm lost. |