use Proc::Queue size => 4, qw(run_back waitpids); my @pids; for my $source (@sourceids) { push @pids, run_back { callScan($source); }; } waitpids(@pids);