【问题标题】:External program called with backticks still produces output用反引号调用的外部程序仍然产生输出
【发布时间】:2012-05-30 07:57:06
【问题描述】:

所以我在 perl 中调用了一个外部程序并想要捕获它的输出:

my @RNAalifoldOut = `RNAalifold some parameters`;

如果从命令行调用,输出由三行组成,例如:

4 sequences; length of alignment 48.
__GCCGA_UGUAGCUCAGUUGGG_AGAGCGCCAGACUGAAAAUCAGA 
...((((.....((((.........)))).(((((.......)))))

但是我的数组@RNAalifoldOut 只包含最后两行,并且在执行该行时第一行直接出现在屏幕上。

这怎么可能?我想也许程序将第一行写入STDERR,但反引号运算符不是将其丢弃了吗?我该怎么做才能隐藏这个输出?

问候 尼克

【问题讨论】:

    标签: perl backticks


    【解决方案1】:

    您可能会看到来自 RNAalifold 的标准错误。反引号仅捕获标准输出。

    通过将代码更改为来捕获标准输出和标准错误

    my @RNAalifoldOut = `RNAalifold some parameters 2>&1`;
    

    要丢弃标准错误,请使用

    my @RNAalifoldOut = `RNAalifold some parameters 2>/dev/null`;
    

    在类 Unix 平台上。在 Windows 上,使用

    my @RNAalifoldOut = `RNAalifold some parameters 2>nul`;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2013-08-27
      • 2011-11-28
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多