my $pid = open(CMD, '-|'); die("cannot fork: $!") unless (defined $pid); if ($pid == 0) { close(STDERR); open(STDERR, ">&STDOUT") or print "Unable to reopen STDOUT, errors may be lost: $!"; exec('/bin/tar', 'czf', '/nonexistent/test.tar.gz', '.') or die("Unable to exec: $!") } local $/ = undef; my $output .= ; close (CMD); my $result = $? >> 8; print "result = $result\n"; print $output; #### result = 0 /bin/tar: /nonexistent/test.tar.gz: Cannot open: No such file or directory /bin/tar: Error is not recoverable: exiting now