我正在尝试使用 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/