On Wed, 12 Jan 2005 17:27:46 -0700, Dan Fish <[EMAIL PROTECTED]> wrote:
> Are ALL pattern matching variables set back to undef once another m// or
> s/// expression is encountered, even if it contains no parenthized
> expressions?
>
> For example, I would have expected $1 & $2 to be valid in BOTH print
> statements below...
The numbered match variables ($1, $2, $3, etc.) and the related punctu-
ation set ($+, $&, $`, $', and $^N) are all dynamically scoped until
the end of the enclosing block or _until the next successful match_,
whichever comes first.
Thus:
__Successfull second pattern match__
perl -e '$foo = "hello"; $foo =~ /(l+)/; print "$1\n"; print "ok\n" if
$foo =~ /hello/; print " $1\n"'
ll
ok
__Unsuccessfull second pattern match__
perl -e '$foo = "hello"; $foo =~ /(l+)/; print "$1\n"; print "nope\n"
unless $foo =~ /helo/; print " $1\n"'
ll
nope
ll
Tor
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>