Tubo de fechamento Perl sem erro
Estou usando o Perl para executar um programa externo e gostaria de encerrar sua execução se ele retornar uma string específica durante a execução. O código abaixo interrompe a execução conforme desejado, no entanto, uma mensagem de erro é retornada quando a última linha (fechamento) é executada.
open (my $out, "-|", "usfos $memory<input-$cpu.scr");
while (<$out>) {
if ($_ =~ /MIN STEP LENGTH/) {
last;
}
}
close $out;
Esta é a parte do erro impresso (o programa externo também retorna mensagens de erro):
...forrtl: The pipe is being closed.
forrtl: severe (38): error during write, unit 6, file CONOUT$
Então eu acho que é porque o Perl está tentando escrever em um identificador fechado. Como evitar que algo seja impresso?