use strict; my %hash; my @dirs; @dirs = qw(ONE TWO THREE FOUR); for my $loop(@dirs) { pipe (FROM_CHILD_$loop, TO_PARENT_$loop) or die "Oops Pipe: $!\n"; select((select(TO_PARENT_$loop), $|++ )[0]); # set autoflush $|++; my $test = rand 5; # simulate processing print TO_PARENT_$loop "$test $loop\n"; } for my $loop(@dirs) { chomp( my $in = ); (my $value, my $key) = split(/\ /, $in); $hash{$key} = $value; } close FROM_CHILD_$loop; close TO_PARENT_$loop; for my $loop(keys %hash) { print "keys $loop => $hash{$loop}\n"; }