1

何らかのアクションを実行する Perl の EXE ファイルを呼び出したい

backtickandを介してexeファイルを呼び出してみsystemましたが、どちらの場合も戻り値のみを取得します

exe ファイルは、コンソールにいくつかのテキストを出力します。それも捉えられるのでしょうか?

この変数を調べました${^CHILD_ERROR_NATIVE}が、テキストではなく戻り値のみを取得します

Perl 5.14 を使用しています

前もって感謝します

4

3 に答える 3

5

アプリケーションは、バックティック演算子によってキャプチャされない代わりに、STDOUTその出力を出力しない場合があります。STDERR両方をキャプチャするには、次を使用できます。

my $binary = 'foo.exe';
my $output = `$binary 2>&1`;

キャプチャをより細かく調整するには、プロセスのすべてのストリーム ( 、および)IPC::Open3を「制御」できる手段を使用することをお勧めします。INOUTERR

于 2012-02-06T08:43:40.777 に答える
1

Scriptaliciouscaptureのandcapture_err関数をお勧めします。

use Scriptalicious qw(capture);

my $output = capture('my_command', 'arg');
于 2012-02-06T08:55:08.387 に答える
1

以前は、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;
}

役立つかどうかを確認する

于 2012-02-06T08:47:05.143 に答える