use File::Find; find (\&wanted_user, "$dir"); sub wanted_user { %sum = (); next unless (-d $_); ($user,$size) = (stat($_))[4,7] or die "can't stat: $!\n"; push ( @{$sum{$user}}, $size ); } foreach $user (sort keys %sum) { print "$user: @{$sum{$user}}\n"; }