> : it looks worse and dumps core.
>
> That's because the first non-paren forces it to recurse into the
> second branch until you hit REG_INFTY or overflow the stack. Swap
> second and third branches and you have a better chance:
I think something else goes wrong there too.
> $re = qr{...}
> (I haven't checked that there aren't other problems with it, though.)
Try this:
"(x)(y)" -~ /^$re$/;
This should match, but it dumps core. I don't think there is infinite
recursion, although I might be mistaken.
Anyway, Snobol has a nice heuristic to prevent infinite recursion in
cases like this, but I'm not sure it's applicable to the way the Perl
regex engine works. I will think about it.