如何同时将输出打印到终端和文件?
$ perl foo.pl > foout.txt
不允许我查看直播过程。
有没有什么方法可以实时看到输出过程,并在文件的屏幕输出结束?
答案 0 :(得分:17)
perl foo.pl |
tee
foout.txt
答案 1 :(得分:9)
实用程序tee会这样做。
答案 2 :(得分:7)
见IO::Tee。这个模块允许你在你的程序中选择性地进行细粒度控制(还有一个不太成熟的模块叫File::Tee,它曾经为我工作过一次,但我不建议任何严肃的项目)。
另请参阅Log4perl,了解对记录在何处和如何记录的内容进行非常精细的控制。
对于其他人推荐的命令行中的一次性使用,您当然可以使用命令行实用程序tee
(如果您有权访问它)。
答案 3 :(得分: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读取一行输入并将其打印到屏幕然后再打印到文件。到达结尾时,它将关闭文件