3

如何同时将输出打印到终端和文件?

$ perl foo.pl > foout.txt

不允许我看到实时过程。

有什么方法可以实时查看输出过程并在最后将屏幕输出显示在文件上?

4

4 回答 4

17

perl foo.pl | tee foout.txt

于 2009-07-26T12:40:50.060 回答
9

实用三通会这样做。

于 2009-07-26T12:40:42.493 回答
7

请参阅IO::Tee。该模块将允许您在程序中通过细粒度控制有选择地执行此操作(还有一个不太成熟的模块,称为File::Tee,它曾经对我有用,但我不建议将其用于任何严肃的项目)。

另请参阅Log4perl以获得对在何处以及如何记录的内容进行真正细粒度的控制。

对于命令行的一次性使用,正如其他人所建议的那样,您当然可以使用命令行实用程序tee,如果您可以访问它。

于 2009-07-26T12:41:13.647 回答
0

或者您可以将其通过管道传输到 perl 程序中以打印到屏幕和日志文件(也就是说,如果您不在 Unix 上或没有 tee 程序)

perl foo.pl | perl myPipe.pl myFile.txt

数据被捕获到 myFile.txt 和

myPipe.pl 是

#
open OUTFILE,">$ARGV[0]" or die "Unable to open file: $ARGV[0]\n";

while(<>)
{
    print;
    print OUTFILE;
}
close OUTFILE;

这会从 STDIN 读取一行输入并将其打印到屏幕上,然后再打印到文件中。到达结束时,它将关闭文件

于 2009-07-27T04:21:58.067 回答