我正在尝试使用 Perl 的 system 函数来捕获输出,以执行系统命令的输出并将其重定向到文件,但由于某种原因,我没有得到整个输出。

我正在使用以下方法:

system("example.exe >output.txt");

这段代码有什么问题,或者有没有其他方法可以做同样的事情?

最佳答案

MVS's answer 相同,但现代且安全。

use strict;
use warnings;

open (my $file, '>', 'output.txt') or die "Could not open file: $!";
my $output = `example.exe`;
die "$!" if $?;
print $file $output;

更轻松
use strict;
use warnings;

use autodie;

open (my $file, '>', 'output.txt');
print $file `example.exe`;

如果您同时需要 STDOUT 和 STDERR
use strict;
use warnings;

use autodie;
use Capture::Tiny 'capture_merged';

open (my $file, '>', 'output.txt');
print $file capture_merged { system('example.exe') };

关于perl - 将系统命令的输出捕获到文本文件的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7799045/

10-15 09:43