Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: reset named capture buffer within regex

by ColonelPanic (Friar)
on Nov 23, 2012 at 11:15 UTC ( #1005256=note: print w/replies, xml ) Need Help??

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

Replies are listed 'Best First'.
Re^2: reset named capture buffer within regex
by tobyink (Abbot) on Nov 23, 2012 at 11:53 UTC

    %+ and %- are "just" tied hashes which give access to the underlying named capture data buried away in the Perl core. Even if you were able to alter the hashes, there's no guarantee that it would effect the underlying data, so using ?(<mybuf>) later on in the regular expression might give surprising results.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005256]
[choroba]: It works about 2.5 times faster than the original sort
[Corion]: choroba: Well, it should be faster since it exploits that it only has to sort much smaller lists :)
[Corion]: Also, it outputs (partial) results much earlier, which is nice too :)
[choroba]: I hope it's ok , there's just no reaction from the OP

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2018-02-22 08:55 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (289 votes). Check out past polls.