Emulate du by adding file sizes in a hierarchical way. Just a short pattern for those stumped on how to implement it.
use File::Find; my $TOP = "/some/place/out/there"; my %sums; find sub { my @places = split qr{/}, $File::Find::name; my $blocks = (stat($_))[12]; while (@places) { $sums{join "/", @places} += $blocks; pop @places; } }, $TOP; # now $sums{"/some/place/out/there/foo"} contains the aggregate sum of + all blocks below that directory!

{Corrected from an earlier version.}