use strict; use warnings; use MCE; use MCE::Shared; my @dirs = qw( a b c d e f ); my %hash = map { $_ => MCE::Shared->hash } @dirs; my $mce = MCE->new( max_workers => 4, chunk_size => '12m', use_slurpio => 1, user_func => sub { my ($mce, $slurp_ref, $chunk_id) = @_; my $dir = $mce->user_args()->[0]; open my $MEM_FH, "<", $slurp_ref; while (<$MEM_FH>) { chomp; if ($_ =~ /^area=(.*)/) { $hash{"$dir"}{"area"} = $1; } } close $MEM_FH; } )->spawn; foreach my $dir (@dirs) { if (-e "$dir/syn.log") { $mce->process({ user_args => [ $dir ] }, "$dir/syn.log"); } } $mce->shutdown; print $hash{"a"}{"area"}, "\n";