Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: one liner string extraction

by vr (Curate)
on Nov 02, 2017 at 15:33 UTC ( [id://1202623]=note: print w/replies, xml ) Need Help??


in reply to Re: one liner string extraction
in thread one liner string extraction

Hm-m, while the above solution works, but by way of nitpicking and because of TIMTOWTDI:

$1 is reset on each attempted match

$1 is reset on each successful match, and restored on each scope end. Scope end happens twice (rather, n + 1) in OP: 1st on every loop iteration (-n), second at program finishing but before executing END block(s).

>perl -wE "'a'=~/(a)/; 'a'=~/b/; say $1" a >perl -wE "'a'=~/(a)/; 'a'=~/a/; say $1" Use of uninitialized value $1 in say at -e line 1. >perl -wE "'a'=~/(a)/; END { say $1 }" Use of uninitialized value $1 in say at -e line 1.

But we can abuse the fact that, unlike other global variables related to regular expressions, the $^R is not dynamically scoped. Further, let's match only once, and also have a little fun and save us a few keystrokes by using a secret (END will also do, of course):

>perl -ne "/^(.*) INFO.+Successfully sent(?{$1})/ }{ print $^R" file

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2024-04-25 12:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found