我想打电话给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