#!/usr/bin/perl -- use strict; use warnings; use Proc::Background; my @commands = ( [ 'echo', 'arg','arg', ] , [ 'perl', '-le',' print 1; sleep 1; warn 2; sleep 1; die 3;' ], ); my @procs = map { Proc::Background->new(@$_); } @commands; $_->wait for @procs; system 'echo', 'nowTheyAreAllDead.pl', '--pidsAndExitStatus', map { $_->pid, $_->wait } @procs; __END__ arg arg 1 2 at -e line 1. 3 at -e line 1. nowTheyAreAllDead.pl --pidsAndExitStatus 2956 0 2120 65280