Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Print n lines after a matched line

by Marshall (Canon)
on Jun 14, 2018 at 17:08 UTC ( [id://1216648]=note: print w/replies, xml ) Need Help??


in reply to Print n lines after a matched line

I like the flip-flop operator as demo'd by Discipulus. If I don't use that, I often use the following pattern. The flip-flop operator maintains the state of whether you are inside the record or not - that's a very nice feature. Anyway, without the flip-flop, instead of maintaining a flag to tell me if I'm in the record or not, I call a subroutine to keep track of the "state". This may be a bit "wordy", but the logic is crystal clear (at least to me).
#!/usr/bin/perl use strict; use warnings; while (defined (my $line = <DATA>)) { process_record($line) if $line =~ /^\s*SCHEDULE "DUMMY CHECK"/; } sub process_record { my $line = shift; #the "trigger line" print $line; for (1..3) #maybe have regex for "end of record"? { my $line = <DATA>; print $line; } print "\n"; #just a spacer } =prints SCHEDULE "DUMMY CHECK" DESCRIPTION "Do some stuff" Check something INTERVAL "10m" SCHEDULE "DUMMY CHECK" DESCRIPTION "Do some more stuff" Check something INTERVAL "30m" =cut __DATA__ SCHEDULE "TEST" DESCRIPTION "Do Some stuff" MINUTE "53" HOUR "21" SCHEDULE "DUMMY CHECK" DESCRIPTION "Do some stuff" Check something INTERVAL "10m" MINUTE "50" HOUR "21" SCHEDULE "TEST" DESCRIPTION "Do Some stuff" MINUTE "53" HOUR "21" SCHEDULE "DUMMY CHECK" DESCRIPTION "Do some more stuff" Check something INTERVAL "30m" MINUTE "50" HOUR "21"

Log In?
Username:
Password:

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

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

    No recent polls found