5

だから私はperlで外部プログラムを呼び出し、その出力をキャプチャしたいと思います:

my @RNAalifoldOut = `RNAalifold some parameters`;

コマンドラインから呼び出された場合、出力は次の3行で構成されます。

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

ただし、私の配列@RNAalifoldOutには最後の2行しか含まれておらず、行が実行されているときに最初の行が画面に直接表示されます。

どうすればいいの?プログラムが最初の行をに書き込むので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 に答える