如何将标准输出重定向到Perl中的文件?

Mik*_*ike 12 perl io-redirection

我正在寻找一个使用Perl将stdout重定向到文件的示例.我正在做一个相当简单的fork/exec工具,我想将子输出重定向到文件而不是父项stdout.

有没有dup2()我应该使用的等效物?我似乎找不到它

iva*_*ans 29

来自perldoc -f open:

open STDOUT, '>', "foo.out"
Run Code Online (Sandbox Code Playgroud)

文档是你的朋友......


小智 6

正如JS Bangs所说,重定向输出的一种简单方法是使用'select'语句.
非常感谢stackoverflow及其用户.我希望这是有帮助的

例如:

print "to console\n"; 
open OUTPUT, '>', "foo.txt" or die "Can't create filehandle: $!";
select OUTPUT; $| = 1;  # make unbuffered
print "to file\n";
print OUTPUT "also to file\n";
print STDOUT "to console\n";
# close current output file
close(OUTPUT);
# reset stdout to be the default file handle
select STDOUT;
print "to console"; 
Run Code Online (Sandbox Code Playgroud)