Perl Rohr ohne Fehler schließen

Ich verwende Perl zum Ausführen eines externen Programms und möchte dessen Ausführung beenden, wenn es während der Ausführung einen bestimmten String zurückgibt. Der folgende Code unterbricht die Ausführung wie gewünscht, es wird jedoch eine Fehlermeldung zurückgegeben, wenn die letzte Zeile (close) ausgeführt wird.

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

Dies ist der Teil des Fehlers, der gedruckt wird (das externe Programm gibt auch Fehlermeldungen aus):

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

Also, ich denke, es liegt daran, dass Perl versucht, in ein geschlossenes Handle zu schreiben. Wie kann ich verhindern, dass etwas gedruckt wird?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage