[Melbourne-pm] An old one but an important one

Tim Connors tconnors at astro.swin.edu.au
Sun Jan 20 22:26:11 PST 2008

On Mon, 21 Jan 2008, Jacinta Richardson wrote:

> Tim Connors wrote:
> > Crap.  I was always under the impression that $& $' and $` were esoteric 
> > things that are only used by perlre gurus.
> > 
> > But perlre(1) tells me that parentheses and $1, $2,... use them internally 
> > with the huge performance hit, but (at least) don't come with the cost of 
> > slowing down all uses of REs.
> > 
> > I wonder how much of my own code uses parentheses avoidably?
> Probably a lot.  The  (?:  construct is ugly and I sometimes I don't remember
> which order the : and ? go in.  Still, although it's slower than it needs to be,
> it doesn't have the same performance impact on _every_ other regular expression
> in your program.  Using $&, $' or $` does affect every regular expression,
> because Perl cannot tell in advance (at compile time) which regular expression
> will set $& etc before its use, and thus has to set them for each and every
> expression just in case.

I was wondering what the justification for $& affecting every regexp was.  
And now I know :)

But if you can't determine where $& is going to come from, why can you 
determine where $1 is going to come from (given that $& is essentially 
$0), such that you don't need to slow down all other regexps too?

Tim Connors

More information about the Melbourne-pm mailing list