Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: Text matching repost

by afoken (Parson)
on Jun 18, 2012 at 14:24 UTC ( #976837=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Text matching repost
in thread Text matching repost

I could just as well use (and more efficient too):
if ($&) { print; }

Ummm, no. $& is one of the "ugly three" variables (the other two are $` and $') that kill performance. From perlvar:

The use of this variable anywhere in a program imposes a considerable performance penalty on all regular expression matches. To avoid this penalty, you can extract the same substring by using @-. Starting with Perl 5.10, you can use the /p match flag and the ${^MATCH} variable to do the same thing for particular match operations.

Apart from that, it may work for this special problem, but it does not work if $& evaluates to false:

perl -E '$x="a0b"; $x=~/0/; say $&; if ($&) { die "not reached!" } if + ($x=~/0/) { say "matched zero" }'

Output:

0 matched zero

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)


Comment on Re^3: Text matching repost
Select or Download Code
Re^4: Text matching repost
by Neighbour (Friar) on Jun 19, 2012 at 06:39 UTC
    Good call, it shall be
    if (scalar @-) { print; }
    then :)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://976837]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (15)
As of 2014-04-16 17:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (433 votes), past polls