Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^2: Text matching repost

by Neighbour (Friar)
on Jun 18, 2012 at 12:19 UTC ( #976821=note: print w/replies, xml ) Need Help??


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

I later realised that instead of using
if (/$start/ or /$stop/) { print; }
I could just as well use (and more efficient too):
if ($&) { print; }
The meaning of $& is explained in perlvar as
The string matched by the last successful pattern match.
You can also use $MATCH if you use English;

Replies are listed 'Best First'.
Re^3: Text matching repost
by afoken (Abbot) on Jun 18, 2012 at 14:24 UTC
    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". ;-)
      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://976821]
help
Chatterbox?
[Corion]: Oh yay. $project has faffed around for 2 years and now pushed a hasty 2 weeks solution into production without telling me. Of course, the new data also needs changes on my side to be processed correctly. Now they try to raise incidents against my ...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2017-08-17 09:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Who is your favorite scientist and why?



























    Results (285 votes). Check out past polls.

    Notices?