use strict; use warnings; my $currentPos; my $processing = 0; while () { 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