所以我在perl中调用外部程序并想要捕获它的输出:
my @RNAalifoldOut = `RNAalifold some parameters`;
Run Code Online (Sandbox Code Playgroud)
如果从命令行调用,则输出包含三行,例如:
4 sequences; length of alignment 48.
__GCCGA_UGUAGCUCAGUUGGG_AGAGCGCCAGACUGAAAAUCAGA
...((((.....((((.........)))).(((((.......)))))
Run Code Online (Sandbox Code Playgroud)
但是,我的数组@RNAalifoldOut只包含最后两行,并且当执行该行时,第一行直接出现在屏幕上.
怎么会这样?我想也许程序可以写第一行STDERR,但不是反引号运算符丢弃的吗?我该怎么做才能隐藏这个输出?
关心尼克
您可能会看到RNAalifold的标准错误.反引号仅捕获标准输出.
通过将代码更改为,捕获标准输出和标准错误
my @RNAalifoldOut = `RNAalifold some parameters 2>&1`;
Run Code Online (Sandbox Code Playgroud)
要丢弃标准错误,请使用
my @RNAalifoldOut = `RNAalifold some parameters 2>/dev/null`;
Run Code Online (Sandbox Code Playgroud)
在类Unix的平台上.在Windows上,使用
my @RNAalifoldOut = `RNAalifold some parameters 2>nul`;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3388 次 |
| 最近记录: |