Solução rápida (e não testada):

my (@buffer,$current_status);
while (my $line = <>) {
    push $line, $buffer;

    if ($line =~ /Status:\s*(\w+)/) {
        $current_status = $1;
    }

    if ($line =~ /End/) {
        if ($current_status eq 'ERROR') {
            print join("\n", @buffer);
        }

        @buffer = ();
    }
}
=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a