use Parallel::ForkControl; my $forker = new Parallel::ForkControl( MaxKids => 5000, MinKids => 5, WatchLoad => 1, MaxLoad => 5.50, Code => \&mySub ); foreach my $col (@collections) { $forker->run($col); } $forker->cleanup(); sub mySub { my $collection = shift; ...... return; }