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?