perl – 使用反引号调用的外部程序仍会产生输出

前端之家收集整理的这篇文章主要介绍了perl – 使用反引号调用的外部程序仍会产生输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我在perl中调用外部程序并想要捕获它的输出

my @RNAalifoldOut = `RNAalifold some parameters`;

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

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

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

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

问候
缺口

解决方法

您可能会看到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`;

猜你在找的Perl相关文章