in reply to The value of pattern match variable $&

I don't have my copy handy, but I'm almost certain that PBP recommends against using $`, $' and $&. Mainly because of the fact that they are global, and if you have several pattern matches in your code you can never be sure which variable was set by which match.

Much better instead to use explicit locally-scoped variables, and capturing parentheses, eg:

my ($prematch, $match, $postmatch) =~ /^(foo)(bar)(baz)$/;

Cheers,
Darren :)

Replies are listed 'Best First'.
Re^2: The value of pattern match variable $&
by spiritway (Vicar) on May 15, 2006 at 14:34 UTC

    IIRC, there is also a big performance hit, if any of these appear anywhere in your program.

      Regexps without captures are faster than regexps with captures. Using any of those three variables causes all regexps in that interpreter instance (similiar to "in that process") to behave as if they had captures. That slows down all regexps without captures.