我有一个打印到 的 perl 程序,stdout
然后我将其输入到一个文件中,如下所示:
./skript.pl > file.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
这使得该 skript 缓冲区的输出。但是,我希望能够看到 skript 目前正在处理什么,所以我试图找到一种方法来在此设置中启用行缓冲,以便在\n
出现时立即打印输出。(如果我只是打印到终端,这是正常行为。)
我需要一个无需在 CentOS 上安装任何东西即可使用的解决方案。
更改 perlscript 中的内容是一种选择。我已经尝试过了$|
,但这比我想要的要多:cat file.txt
如果当前行的末尾尚未打印,它会弄乱输出。
在您的脚本中,您可以使用:
STDOUT->flush;
Run Code Online (Sandbox Code Playgroud)
刷新输出缓冲区。
您甚至可以STDOUT->autoflush(1);
全局设置。
要刷新换行符,请仅尝试:
STDOUT->autoflush(0);
open STDOUT, ">/tmp/script.out"
.
.
close STDOUT;
Run Code Online (Sandbox Code Playgroud)