use File::ReadBackwards; use POSIX "strftime"; my $success; my $items; my $earliest = POSIX::strftime( "%Y-%m-%d %H:%M:%S", localtime( time() - 30 * 60 ) ); $bw = File::ReadBackwards->new( '/var/log/mmsagent/mmsagent.log' ) or die "can't read '/var/log/mmsagent/mmsagent.log' $!" ; while ( defined( my $log_line = $bw->readline() ) ) { last if $log_line lt $earliest; if ($log_line =~ /STATUS = SUCCESS/) { print $log_line; } }