Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Perl 5.10 Regex - Named capture variables

by prasadbabu (Prior)
on Apr 16, 2008 at 13:48 UTC ( #680796=perlquestion: print w/ replies, xml ) Need Help??
prasadbabu has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,
Today when I was studying Perl 5.10 regex, I came across following problem.
When I matched the capture pattern in named variable, I printed it after substitution, but it was not printing. when I print the same immediately after the expression, it works. Where am I going wrong? So can't we use the %+ anywhere in program, just like normal hash?

use feature 'say'; $test = 'abc1234asf'; $test =~ /(?<one>\w{4})(?<two>\w{4})/; #say 'one:', $+{one}; #works #say 'two:', $+{two}; $test =~ s/(?<three>\w{4})(?<four>\w{4})/$+{four}$+{three}/; say 'one:', $+{one}; #NOT works say 'two:', $+{two}; say; say 'three:', $+{three}; say 'four:', $+{four}; say; say 'output:', $test; OUTPUT: ------- one: two: three:abc1 four:234a output:234aabc1sf

Thanks in advance

Prasad

Comment on Perl 5.10 Regex - Named capture variables
Download Code
Re: Perl 5.10 Regex - Named capture variables
by kyle (Abbot) on Apr 16, 2008 at 13:57 UTC

    This is the behavior that I'd expect. Specifically, %+ gets cleared before each regexp execution, so any matches you got before will not be carried over. This is equally true of capture variables $1, $2, etc.

Re: Perl 5.10 Regex - Named capture variables
by moritz (Cardinal) on Apr 16, 2008 at 13:58 UTC
    %+ is reset by a pattern match just like @+ and @_ are.

    %+ isn't a normal hash either, it's magically tied to the regex engine ;-)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://680796]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (11)
As of 2015-07-07 10:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls