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
In reply to Re^2: one liner string extraction
by vr
in thread one liner string extraction
by natxo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |