Sorry for my poor English.
After previous post I've thought once again and now I think than intuitively $2=undefined should be incorrect, and $2=a correct.
After that I've received an email from guru of regex Jeffrey Friedl (regex.info):
---
Hi Serge,
I've been thinking about this for a while, and as far as I can tell it does seem
to be a bug. By definition, $2 must be defined before the (?{...}) can run.
It's probably a problem with how it backtracks. I'd suggest filing a bug report..
---
Splitting the regex:
((\w+)(?{print...}))((\w+)(?{print...}))
is wrong, really the regex is not split.
After (\w+) captures all the string:
(\w+)) | {2}
we see, that second repetition of \w not match. We do backtracking and enter second parentheses going from right to left:
(/w | )+
In this case the regex engine (as I think) set $2=undefined, but why? Intuitively it seems set $2=undefined should do after we leave the open second parenthesis going from right to left.
In reply to Re^3: A bug in Perl regex(?)
by Serge314
in thread A bug in Perl regex(?)
by Serge314
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |