我想打電話給Perl中的EXE文件,該文件執行一些動作如何獲得通過反引號或系統文本在Perl
我試圖通過backtick
和system
但在這兩種情況下調用exe文件我只得到了回報值
EXE文件打印到控制檯上一些文字。是否有可能捕捉到這一點?
我看着這個變量${^CHILD_ERROR_NATIVE}
但我只得到返回值,而不是文字
我使用Perl 5.14
在此先感謝
我想打電話給Perl中的EXE文件,該文件執行一些動作如何獲得通過反引號或系統文本在Perl
我試圖通過backtick
和system
但在這兩種情況下調用exe文件我只得到了回報值
EXE文件打印到控制檯上一些文字。是否有可能捕捉到這一點?
我看着這個變量${^CHILD_ERROR_NATIVE}
但我只得到返回值,而不是文字
我使用Perl 5.14
在此先感謝
的應用程序可能無法將其輸出打印到STDOUT
但STDERR
代替,這是不被反引號運算符捕獲。同時捕獲,你可以使用以下命令:
my $binary = 'foo.exe';
my $output = `$binary 2>&1`;
爲了更微調捕捉,你可能要訴諸IPC::Open3
使用它你可以「控制」全過程流(IN
,OUT
和ERR
)。
我用來從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;
}
檢查它是否可以幫助你
我推薦capture
和capture_err
功能從Scriptalicious。
use Scriptalicious qw(capture);
my $output = capture('my_command', 'arg');
工作太棒了!謝謝 – KK99 2012-02-06 09:00:35
真的嗎?然後我撤回我的評論。 – TLP 2012-02-06 15:08:58