我有一个 perl 脚本,它将消息写入 STDOUT 和 STDERR(通过打印/croak 语句),但我也将 STDOUT 和 STDERR 重定向到日志文件:
File::Tee::tee STDOUT, ">>", "$logFile" ;
File::Tee::tee STDERR, ">>", "$logFile" ;
Run Code Online (Sandbox Code Playgroud)
现在输出日志文件有来自 STDOUT 和 STDERR 的消息显示乱序。此外,终端上的实际输出也出现故障。我试过刷新缓冲区(如这里推荐的那样:https : //perl.plover.com/FAQs/Buffering.html)但它没有帮助:
select(STDERR) ;
$| = 1 ;
select(STDOUT) ;
$| = 1 ;
Run Code Online (Sandbox Code Playgroud)
有谁知道我必须做什么才能按顺序查看输出(我还尝试另外刷新与 $logfile 对应的文件句柄,但它仍然相同)?
编辑:
感谢所有回复的人。关于这个问题的很多讨论都以评论结束,所以我将根据大家的反馈列出我尝试过的一些事情。