如何控制台输出重定向到一个文本文件(How to redirect console output t

2019-06-24 15:01发布

我执行一个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