Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
630 views
in Technique[技术] by (71.8m points)

perl - Best way to capture output from system command to a text file?

I’m trying to capture output from using Perl’s system function to execute and redirect a system command’s ouptut to a file, but for some reason I’m not getting the whole output.

I’m using the following method:

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

What’s wrong with this code, or is there an alternative way of doing the same thing?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Same as MVS's answer, but modern and safe.

use strict;
use warnings;

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

easier

use strict;
use warnings;

use autodie;

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

if you need both STDOUT and STDERR

use strict;
use warnings;

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

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...