use strict; use warnings; use feature qw( say ); use Parallel::ForkManager qw( ); sub RunChild { my ($item) = @_; exit($item); } { my $pm = Parallel::ForkManager->new(5); $pm->run_on_finish(sub { my ($pid, $exit_code, $ident, $signal, $core) = @_; say $exit_code; }); for (1..10) { my $pid = $pm->start and next; RunChild($_); $pm->finish; } $pm->wait_all_children; }