http://www.perlmonks.org?node_id=1005256


in reply to reset named capture buffer within regex

Adding to what others have said already, I think this simple test probably proves it can't be done:
/(?<foo_match>foo)(??{undef $+{foo_match}})/
Result: modification of read-only value attempted.

This is in line with other regex-related variables (such as the current match position), which can't be altered mid-pattern.

You could do something equivalent using embedded code and setting a variable rather than using named capture. However, that might not be the best idea.

In my mind, when a pattern starts having this much internal logic, the correct way to solve the problem is usually by breaking it down into multiple steps. As cool as Perl's advanced regex features are to play around with, just because you can do it all in a regex doesn't mean you should.



When's the last time you used duct tape on a duct? --Larry Wall