my %hash = (test => 1); my %otherhash; use Parallel::ForkManager; my $pm = new Parallel::ForkManager(5); for(1..10000){ my $pid = $pm->start() and next; # some operations involving waiting etc. if(exists($hash{test}){ # this exist test always fails! } # write some data to otherhash $otherhash{test} = 123; $pm->finish(); } # the data 123 never arrives here...: print $otherhash{test}; ...