在其中一篇文章中,建议使用以下方法将STDOUT捕获到文件中,而不影响STDOUT (终端)的日志记录。
open my $tee, "|-", "tee E:/log.txt";对于如下所示的序列:
print $tee "Log1\n";
print $tee "Log2\n";
my $input = <STDIN>;
print $tee "Log3\n";除非我提供输入,否则我在终端上看不到任何消息。一旦我键入任何字符并按enter键,我就会看到日志如下所示
Log1
Log2
Log3有没有办法让我得到前两个输出,然后等待输入,然后是第三个输出?
或者,有没有办法将STDOUT日志捕获到一个文件中,同时STDOUT日志也一直在终端上出现?
发布于 2015-09-25 20:02:50
使用以下命令将文件句柄设置为无缓冲输出
$old_fh = select($tee);
$| = 1;
select($old_fh);https://stackoverflow.com/questions/32781715
复制相似问题