The numbered match variables ($1, $2, $3, etc.) and the related punctuation set ($+ , $& , $` , $' , and $^N ) are all dynamically scoped until the end of the enclosing block or until the next successful match, whichever comes first.
If the match had failed, and the substitution had not been performed, the match variables retain their values:
my $line="One two three four five"; if($line =~ m/(one)\s(two)\s(three)\s(four)\s(five)/i){ my $one=$1; $one =~ s/ten/ONE/i; # <--- no match print "1: $one\n"; print "2: $2\n"; print "3: $3\n"; print "4: $4\n"; print "5: $5\n"; }#if __END__ 1: One 2: two 3: three 4: four 5: five
In reply to Re: Regexp and substitution question
by toolic
in thread Regexp and substitution question
by bdalzell
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |