Perl cerrando tubería sin error

Estoy usando Perl para ejecutar un programa externo y me gustaría finalizar su ejecución si devuelve una cadena específica mientras se ejecuta. El siguiente código interrumpe la ejecución según lo deseado, sin embargo, se devuelve un mensaje de error cuando se ejecuta la última línea (cerrar).

open (my $out, "-|", "usfos $memory<input-$cpu.scr");
while (<$out>) {
    if ($_ =~ /MIN   STEP  LENGTH/) {
        last;
    }
}
close $out;

Esta es la parte del error que se imprime (el programa externo también devuelve mensajes de error):

...forrtl: The pipe is being closed.
forrtl: severe (38): error during write, unit 6, file CONOUT$

Así que creo que es porque Perl está tratando de escribir en un controlador cerrado. ¿Cómo puedo evitar que se imprima algo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta