Perl:将STDOUT重定向到两个文件

Mat*_*unz 12 io perl redirect stdout stream

如何STDOUT在我的Perl脚本中将流重定向到两个文件(重复项)?目前我只是流入一个日志文件:

open(STDOUT, ">$out_file") or die "Can't open $out_file: $!\n";
Run Code Online (Sandbox Code Playgroud)

我需要改变什么?谢谢.

小智 10

你也可以使用IO::Tee.

use strict;
use warnings;
use IO::Tee;

open(my $fh1,">","tee1") or die $!;
open(my $fh2,">","tee2") or die $!;

my $tee=IO::Tee->new($fh1,$fh2);

select $tee; #This makes $tee the default handle.

print "Hey!\n"; #Because of the select, you don't have to do print $tee "Hey!\n"
Run Code Online (Sandbox Code Playgroud)

是的,输出有效:

> cat tee1
Hey!
> cat tee2
Hey!
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果有人直接引用STDOUT或者它们调用`system`,那将无效. (2认同)