use warnings; use strict; use Data::Dumper; use Parallel::ForkManager; my @files = qw(one.txt two.txt); my %info; my $pm = Parallel::ForkManager->new; FILE: for my $file (@files){ $pm->start and next FILE; $info{$file}{size} = -s $file; $pm->finish; } $pm->wait_all_children; print Dumper \%info; __END__ $VAR1 = { 'two.txt' => { 'size' => 21 }, 'one.txt' => { 'size' => 30 } };