use File::Tail; my $tail = File::Tail->new("/some/log/file"); my @alert; while (defined(my $line = $file->read)) { if ($line =~ /^=\+=/) { process_alert(\@alert); @alert = (); } else { push @alert, $line; } } process_alert(\@alert) if @alert;