perl – 使用反引号调用的外部程序仍会产生输出
发布时间:2020-12-15 23:20:09 所属栏目:大数据 来源:网络整理
导读:所以我在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`; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |