in reply to Problem using File::ReadBackwards

I'd guess you have a line that doesn't start with a timestamp. How about
last if $log_line =~ /^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d/ && $log_line lt + $earliest;
Or make your test code print out the line that made it stop:
if ($log_line lt $earliest) { use Data::Dumper; $Data::Dumper::Useqq = 1; print Dumper("stopped on $log_line"),"\n"; }