【问题标题】:Filtering STDOUT in Perl在 Perl 中过滤 STDOUT
【发布时间】:2015-02-20 15:04:41
【问题描述】:

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

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

是否可以轻松过滤所有发送到日志的消息?说替换字符?

【问题讨论】:

  • open(STDOUT, "| perl -pe's/.../.../' | tee $log")

标签: perl shell stdout


【解决方案1】:

不是你这样做的方式,因为你所做的是将所有内容发送到tee,然后tee 正在打印它正在记录的内容。

您也许可以创建一个内置 sed 的管道。但另一种方法可能是编写您自己的“log_line”子程序,它会显式地打印到日志文件和标准输出。

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

您可以构建自己的转换。

您还可以利用几个模块,例如IO::Teelog4perl。如果您想对STDOUT 和您的日志进行不同的处理,那么可能值得考虑做一个功能更齐全的日志记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多