#!/usr/bin/perl
use IPC::System::Simple qw( capture );
use strict;
use warnings;
my $result;
my $file = $0;
eval{
$result = capture("cat $file | wc -l");
};
if ($@) {print "Error: $@"}
print qq(capture $file: $result);
$file = qq(foo);
undef $result;
eval{
$result = capture("cat $file | wc -l");
};
if ($@) {print "Error: $@"}
print qq(capture $file: $result);
__END__
./test.pl
capture ./test.pl: 32
cat: foo: Datei oder Verzeichnis nicht gefunden
capture foo: 0
####
cat: foo: Datei oder Verzeichnis nicht gefunden
####
#!/usr/bin/perl
use strict;
use warnings;
use IPC::Run qw( run harness );
use Try::Tiny;
use Carp;
my $file = shift || $0;
my @cat = ( "cat", $file );
my @wc = qw( wc -l );
my ( $error, $result );
my @command = ( \@cat, '|', \@wc, '1>', \$result, '2>', \$error );
my $harness = harness @command;
try {
run $harness;
croak $error if $harness->full_result;
}
catch {
print qq(Error: $_);
};
chomp $result;
printf( "%s:\t%s\n", "result", $result );
printf( "%s:\t%s\n", "cat", $harness->full_result(0) );
printf( "%s:\t%s\n", "wc", $harness->full_result(1) );
__END__