my $pid = fork(); unless defined $pid { warn "Can't fork: $!\n"; ...; # do something else exit; } if ($pid == 0) { # child exec @cmd_and_parameters; die "Could not exec $cmd_and_parameters[0]: $!\n"; } else { # parent ...; # do other things waitpid($pid,0) == $pid or die "Error waiting for child: $!\n"; ...; # do more (if needed) }