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

Re^3: Matching a string in a parenthesized block (regex help)

by LanX (Saint)
on Mar 06, 2021 at 15:43 UTC ( [id://11129196]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Matching a string in a parenthesized block (regex help)
in thread Matching a string in a parenthesized block (regex help)

I already linked to the docs for the Flip-Flop operator

Here an implementation

Please note how ...

  • it avoids slurping the whole (potentially huge) file into RAM
  • it's self documenting (well better than one big regex)
  • you can now easily add more complicated tests when maintaining

use strict; use warnings; my $section; my $hit; while (<DATA>) { my $start = /^ASDF \{\s*$/; #(2) my $end = /^\}\s*$/; if ($start .. $end) { $section .= $_; $hit = 1 if /foo_match/; } if ($end and $hit) { print $section; $section = $hit = ""; # reset (1) } } __DATA__ ASDF { tmp foo_match tmp } string2 { tmp } ASDF { tmp bar_match tmp }

NB:

  • 1) you can also exit instead of resetting
  • 2) allowing potential "invisible" whitespace \s* at the end makes it more robust

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (4)
As of 2024-04-18 18:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found