何らかのアクションを実行する Perl の EXE ファイルを呼び出したい
backtick
andを介してexeファイルを呼び出してみsystem
ましたが、どちらの場合も戻り値のみを取得します
exe ファイルは、コンソールにいくつかのテキストを出力します。それも捉えられるのでしょうか?
この変数を調べました${^CHILD_ERROR_NATIVE}
が、テキストではなく戻り値のみを取得します
Perl 5.14 を使用しています
前もって感謝します
アプリケーションは、バックティック演算子によってキャプチャされない代わりに、STDOUT
その出力を出力しない場合があります。STDERR
両方をキャプチャするには、次を使用できます。
my $binary = 'foo.exe';
my $output = `$binary 2>&1`;
キャプチャをより細かく調整するには、プロセスのすべてのストリーム ( 、および)IPC::Open3
を「制御」できる手段を使用することをお勧めします。IN
OUT
ERR
Scriptaliciouscapture
のandcapture_err
関数をお勧めします。
use Scriptalicious qw(capture);
my $output = capture('my_command', 'arg');
以前は、perl スクリプトからコマンドを実行し、この方法で出力をキャプチャしていました
sub execute_command() {
my($host) = @_;
open(COMMAND_IN, "your_command |");
while (<COMMAND_IN>)
{ #The COMMAND_IN will have the output of the command
#Read the output of your command here...
$ans = $_;
}
close(COMMAND_IN);
return $ans;
}
役立つかどうかを確認する