>>>>> "MD" == Mark-Jason Dominus <[EMAIL PROTECTED]> writes:
MD> The $& cost is paid by every regex in the entire program, whether they
MD> used it or not. This is because Perl has no way to tell which regexes
MD> use $& and which do not.
actually it is more like which code refers to $& and which regex that
caem from. the problem stems from $& being a global and not local like
$1. you can effective slow down all rgexes at a distance by using $&
anywhere in your code since perl has no way of telling which regex might
have been the last called when you copy $&.
MD> One of Uri's suggestions in RFC 158 was to compute $& only for
MD> regexes that have a /k modifier. This would solve the $& problem
MD> because Perl would compute $& only when asked to, and not for
MD> every other regex in the rest of the program.
the rfc was about making $& private to the block with the regex and
only make the copy if /k is used or you use grabbing.
a side question i have is whether this extra copy is a runtime effect or
compile time. i would imagine runtime with some global flag being
checked to see if $& is being used. so you could run fast and later load
a module uses $& which slows you down.
in any case, i think we have a fair agreement on rfc 158 and i will
freeze it if there is no further comments on it.
uri
--
Uri Guttman --------- [EMAIL PROTECTED] ---------- http://www.sysarch.com
SYStems ARCHitecture, Software Engineering, Perl, Internet, UNIX Consulting
The Perl Books Page ----------- http://www.sysarch.com/cgi-bin/perl_books
The Best Search Engine on the Net ---------- http://www.northernlight.com