in reply to Read forward and backward - need help
The following code should do what you want. Essentially, it's a finite state machine.
Hope this helps, -gjb-
use strict; use warnings; my $currentPos; my $processing = 0; while (<DATA>) { chomp($_); if ($_ eq q(START OF RECORD)) { $currentPos = tell(DATA); } elsif (/INFORMATION I AM LOOKING FOR/ && !$processing) { seek(DATA, $currentPos, 0); $processing = 1; } elsif ($_ eq q(END OF RECORD)) { $processing = 0; } elsif ($processing) { print "$_\n"; } } __DATA__ START OF RECORD LINE 1 INFORMATION I AM NOT LOOKING FOR LINE 3 LINE 4 LINE 5 LINE 6 END OF RECORD START OF RECORD LINE 1 ok INFORMATION I AM LOOKING FOR LINE 3 ok LINE 4 ok LINE 5 ok LINE 6 ok END OF RECORD START OF RECORD LINE 1 LINE 2 LINE 3 LINE 4 INFORMATION I AM NOT LOOKING FOR LINE 6 END OF RECORD START OF RECORD LINE 1 ok LINE 2 ok LINE 3 ok LINE 4 ok INFORMATION I AM LOOKING FOR LINE 6 ok END OF RECORD
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Read forward and backward - need help
by Anonymous Monk on Jan 17, 2003 at 22:24 UTC |