develooper Front page | perl.perl6.language | Postings from September 2005

Re: [regex] \&

Thread Previous
From:
Ruud H.G. van Tol
Date:
September 26, 2005 13:41
Subject:
Re: [regex] \&
Message ID:
01a401c5c2da$a971e540$0b01a8c0@isolution.nl
Juerd:
> Ruud H.G. van Tol:

>> Think about adding \& to the replacement part of a s///.
>> As in sed, the & means the whole match.
>
> Do you know Perl 5's $& variable? What you want isn't exactly new for
> Perl.

Yes I certainly know it. That it slows things down too.

A point was to not set up a variable. The \& is only a message for the
regex. An extra meaning for \1 could be to block the set up of a $1,
which might seem drastic but can help optimization.


>>   s/($search)/*\1*/go
>
> \1 in Perl 5 is bad style and emits a warning, if you were clever
> enough to enable warnings. \1 in Perl 6 strings will no longer have
> anything to do with regex matches.

It could be reinstated as "living in regex-engine-space only".


>> (I assume that using () always makes a $1 available, even if it is
>> not being used.)
>
> Perl 5's $& is inefficient because of this. If the variable is used
> anywhere, Perl will for every regex used capture everything. An
> implicit match string is far less efficient than an explicit one, in
> terms of Perl 5. Perl 6, however, will handle things smarter and not
> copy the substring until it needs to be. That's why the equivalent of
> $& will be usable without any frowning.

OK.

-- 
Grtz, Ruud


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About