#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;
use Parallel::ForkManager;
GetOptions(
'h|help' => \my $help,
'p|process=i' => \my $process,
'verbose' => \my $verbose,
) or pod2usage();
pod2usage() if $help;
my $pm = Parallel::ForkManager->new($process || 1);
my $result = {};
$pm->run_on_finish(
sub {
my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $data) = @_;
if (defined $data) {
$result->{$pid} = $$data;
}
}
);
for my $id (0..10) {
my $pid = $pm->start and next;
$pm->finish(0, \"finished $id");
}
$pm->wait_all_children;
use Data::Dumper;
warn Dumper($result);