salva thanks for the suggestion of Proc::Queue. Its simple and very effective.
zentara I'm interested to know about afork() routine.
Please walk me through the code. I want to know how the childs are reaped by the parent and how the passed code is executed by the afork() routine
sub afork (\@$&) {
my ($data, $max, $code) = @_;
my $c = 0;
foreach my $data (@$data) {
wait unless ++ $c <= $max;
die "Fork failed: $!\n" unless defined (my $pid = fork);
exit $code -> ($data) unless $pid;
}
1 until -1 == wait;
}