#!/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__