use strict; use warnings; use feature 'say'; use Data::Dumper; ++$Data::Dumper::Sortkeys; use Parallel::ForkManager; my $pid = $$; say "PID $pid"; $SIG{'INT'} = sub { kill 'TERM', -$$ }; $SIG{'TERM'} = sub { exit 0 }; my $pm = Parallel::ForkManager->new(6); for ( 0 .. 9 ) { my $start = 10 * $_; $pm->start and next; for ( $start .. $start + 9 ) { say sprintf '%.2d %s', $_, $$; sleep 1; } $pm->finish; } END { say sprintf '%s (%s) in END', $$, $$ == $pid ? 'Parent' : 'Child'; } __END__