我执行一个Perl程序。 无论正在打印我的控制台上,我想重定向到一个文本文件中。
Answer 1:
这样做的优选方法是通过命令行,例如,以处理重定向
perl -w my_program.pl > my_output.txt
如果您还想包括stderr输出,那么你可以这样做(假设你的shell是bash):
perl -w my_program.pl &> my_output.txt
Answer 2:
在CLI中,您可以用>
,就像这样:
perl <args> script_name.pl > path_to_your_file
如果你想这样做,perl脚本里面,你打印任何东西之前添加以下代码:
open(FH, '>', 'path_to_your_file') or die "cannot open file";
select FH;
# ...
# ... everything you print should be redirected to your file
# ...
close FH; # in the end
Answer 3:
在Unix上,以捕获去你的终端,要重定向两个标准输出和标准错误的一切。
使用bash,命令似的
$ ./my-perl-program arg1 arg2 argn > output.txt 2>&1
C shell中, csh
衍生物如tcsh
,和bash的较新版本理解
$ ./my-perl-program arg1 arg2 argn >& output.txt
意味着同样的事情。
在Windows命令shell的语法类似于Bourne shell中的。
C:\> my-perl-program.pl args 1> output.txt 2>&1
为了建立这种重定向在你的Perl代码,添加
open STDOUT, ">", "output.txt" or die "$0: open: $!";
open STDERR, ">&STDOUT" or die "$0: dup: $!";
你的程序的可执行语句的开始。
Answer 4:
如果你想在控制台打印你的输出和日志那么这行追加到您的代码(如之前的任何打印语句)
open (STDOUT, "| tee -ai logs.txt");
print "It Works!";
在脚本中的最后一次打印后
close (STDOUT);
有关错误消息只,
open (STDERR, "| tee -ai errorlogs.txt");
文章来源: How to redirect console output to a text file