my @last_lines; while (<>) { if ($_ eq "D : Error Occurred\n") { print @last_lines,$_; last; } if (/===/) { @last_lines =(); } elsif (@last_lines < 2) { push @last_lines,$_; } }