我想在 Perl 中调用一个执行某些操作的 EXE 文件
我尝试通过调用exe文件backtick
,system
但在这两种情况下我都只得到返回值
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;
}
检查它是否对您有帮助
我推荐Scriptaliciouscapture
的andcapture_err
函数。
use Scriptalicious qw(capture);
my $output = capture('my_command', 'arg');