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

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