parse a file and collect data into H pass its reference to Sub sub Sub { my $Href = @_; my $n_processes = 16; my $pm = new Parallel::ForkManager($n_processes); foreach my $key (keys %{$Href}) { my $var = $key->attribute; my $cmd = "SomeBinary ".$var; $pm->start and next; # do the fork system($cmd); $pm->finish; } pm->wait_for_all_children; }