in reply to Fork limited childs and passing parameters

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; }