use strict; use warnings; use autodie; use MCE::Loop; use Data::Dumper; my $data_file = 'DATA_F.dat'; my (%global_hash1, %global_hash2); my ($global_counter1, $global_counter2) = (0, 0); MCE::Loop::init { use_slurpio => 1, max_workers => 8, init_relay => 0, gather => sub { my ($counter, $hash_ref) = @_; $global_counter2 += $counter; while (my ($k,$v) = each %{$hash_ref}) { $global_hash2{$k} = $v; } }, }; print "# printing counter1\n"; { open (my $fh, '<', $data_file); while (<$fh>) { my ($k,$v) = split; $global_hash1{$k} = $v; print ++$global_counter1, $/; } } print "# done printing counter1\n"; print "# printing counter2\n"; mce_loop_f { my ($mce, $chunk_file, $chunk_id) = @_; my ($wid, $counter, %hash) = (MCE->wid, 0); my $output = "# worker $wid\n"; open my $fh, "<", $chunk_file or die "$!"; while (<$fh>) { my ($k, $v) = split; $hash{$k} = $v; $output .= (++$counter).$/; } close $fh; MCE->gather($counter, \%hash); MCE->print($output); } $data_file; MCE::Loop->finish(); print "# done printing counter2\n"; print "counter1 final: ", $global_counter1, $/; print "counter2 final: ", $global_counter2, $/; print "hash1: ", Dumper(\%global_hash1); print "hash2: ", Dumper(\%global_hash2); #### # printing counter1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # done printing counter1 # printing counter2 # worker 3 1 2 # worker 8 1 2 # worker 3 1 2 # worker 8 1 2 # worker 6 1 2 # worker 3 1 2 # worker 7 1 2 # worker 4 1 2 # worker 8 1 2 # worker 6 1 2 # worker 5 1 2 # worker 2 1 2 # worker 1 1 2 # done printing counter2 counter1 final: 26 counter2 final: 26 hash1: $VAR1 = { '2' => 'b', '23' => 'w', '14' => 'n', '15' => 'o', '26' => 'z', '17' => 'q', '11' => 'k', '9' => 'i', '5' => 'e', '22' => 'v', '19' => 's', '20' => 't', '16' => 'p', '8' => 'h', '24' => 'x', '18' => 'r', '25' => 'y', '3' => 'c', '21' => 'u', '1' => 'a', '13' => 'm', '4' => 'd', '10' => 'j', '7' => 'g', '6' => 'f', '12' => 'l' }; hash2: $VAR1 = { '10' => 'j', '7' => 'g', '12' => 'l', '6' => 'f', '3' => 'c', '21' => 'u', '8' => 'h', '16' => 'p', '25' => 'y', '18' => 'r', '24' => 'x', '13' => 'm', '4' => 'd', '1' => 'a', '22' => 'v', '19' => 's', '9' => 'i', '5' => 'e', '20' => 't', '23' => 'w', '2' => 'b', '11' => 'k', '17' => 'q', '15' => 'o', '14' => 'n', '26' => 'z' };