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

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

概述所以我在perl中调用外部程序并想要捕获它的输出: my @RNAalifoldOut = `RNAalifold some parameters`; 如果从命令行调用,则输出由三行组成,例如: 4 sequences; length of alignment 48.__GCCGA_UGUAGCUCAGUUGGG_AGAGCGCCAGACUGAAAAUCAGA ...((((.....(((( 所以我在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 – 使用反引号调用的外部程序仍会产生输出全部内容,希望文章能够帮你解决perl – 使用反引号调用的外部程序仍会产生输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存