my $cmd = "cp $foo $bar"; my $r = system($cmd); if ($r) { if ($? == -1) { die "failed to execute '$cmd': $!\n"; } elsif ($? & 127) { my $msg = sprintf "'$cmd' failed with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; die $msg; } else { die "'$cmd' exited with value %d\n", $? >> 8; } } #### copy($foo, $bar) or die "cannot copy $foo to $bar: $!";