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