如何在Windows上捕获Perl输出(Strawberry perl)

时间:2015-08-22 18:42:33

标签: windows perl strawberry-perl

无论我做什么,输出都会打印到命令窗口而不是被捕获。我在Windows上使用Strawberry Perl并尝试捕获ffprobe的输出以进行一些批量转换。

在每个实例中,命令都能正常工作,我无法捕获它。输出转到命令窗口,返回值似乎是一个空字符串。

$output = `ffprobe.exe "$file"`; # nope

$output = qx/ffprobe.exe "$file"/; # nope

$return = system("ffprobe.exe \"$file\" > output.txt") # nope, and $return is 0

如果我打开一个命令窗口并像这样运行它:

perl myscript.pl > output.txt

output.txt包含脚本本身打印的内容(如果我"print 'command output starts here:';它将包含它),但没有程序输出。

因为我一直在Linux上这样做,所以一定是Windows的怪癖,我只是想不出来。

更新,已解决

事实证明输出正被发送到STDERR。我能够捕获它 IPC :: RUN3。没有其他工作,所以我想在Windows上调用IPC :: Run3我的解决方案。如果有人遇到同样的问题,我会留下这篇文章。

use IPC::Run3;
my ($stdout, $stderr);
$run = run3($command, undef, \$stdout, \$stderr); # backslashes are important here
say "output was $stderr"; # works

0 个答案:

没有答案