use File::Find; my $dir = @ARGV[0]; find(\&do_dir, $dir); my %hash; sub do_dir { my $size = -s ($File::Find::name); my $dir = ($File::Find::dir); $hash{($File::Find::dir)} += -s ($File::Find::name); } foreach (keys %hash) { print "DIR $_ = $hash{$_}\n"; }