use Parallel::ForkManager; # Yadda yadda local %hash; $pm = new Parallel::ForkManager(2); # Want use 2 CPUs now (###) foreach $thingy (@so_30_member_list) { my $pid = $pm->start and next; # (###) $hash{$thingy} = &big_heavy_computation_of($thingy); $pm->finish; # Terminates the child process (###) } &look_at_hash;