use strict; use warnings; use File::ReadBackwards; open my $forward, '<', 'filename.txt' or die $!; while( my $line = <$forward> ) { last if $line eq "\n"; } my $blank_position = tell( $forward ); close $forward; my $bw = File::ReadBackwards->new( 'filename.txt' ) or die "can't read 'filename.txt' $!" ; while( defined( my $bw_line = $bw->readline ) ) { last if $bw->tell() <= $blank_position; print $bw_line; }