5

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

my @RNAalifoldOut = `RNAalifold some parameters`;

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

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

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

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

问候尼克

4

1 回答 1

8

您可能会看到来自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`;
于 2012-05-23T18:21:23.947 回答