在Perl中过滤STDOUT

时间:2015-02-20 15:04:41

标签: perl shell stdout

我这样做是为了记录发送到我脚本中STDOUT的每条消息。

open(STDOUT," | tee $log") or die "Unable to open $log";

是否可以轻松过滤发送到日志的所有邮件?说一个角色的替换?

1 个答案:

答案 0 :(得分:2)

不是你这样做的方式,因为你正在做的是将所有发送到teetee正在打印它&# 39;记录。

你也许可以创建一个内置sed的管道。但另一种选择可能就是编写自己的“log_line”#39; sub,显式打印到日志文件和stdout。

sub print2 {
    print {$output_fh} @_;
    print @_; 
}

你可以构建自己的变换。

您还可以使用多个模块,例如IO::Teelog4perl。如果您想要将STDOUT和您的日志放在不同的位置,那么可能值得考虑进行功能更全面的日志记录。