我正在使用Perl执行外部程序,并且如果在运行时返回特定字符串,则希望结束其执行。下面的代码根据需要中断执行,但是在执行最后一行(关闭)时会返回错误消息。
open (my $out, "-|", "usfos $memory<input-$cpu.scr");
while (<$out>) {
if ($_ =~ /MIN STEP LENGTH/) {
last;
}
}
close $out;
Run Code Online (Sandbox Code Playgroud)
这是所显示的错误的一部分(外部程序还会返回错误消息):
...forrtl: The pipe is being closed.
forrtl: severe (38): error during write, unit 6, file CONOUT$
Run Code Online (Sandbox Code Playgroud)
所以我认为这是因为Perl试图写一个封闭的句柄。如何避免打印任何内容?