#!/usr/local/bin/perl -w my $path="/perl/bin"; print "\n\nThe sum of all files in a directory '$path' (including files in subdirectories) is ", &Sizes ($path), " bytes \n"; sub Sizes { my $dir = shift; my $size = 0; my $entry; my @subDirs; chdir $dir or die " chdir failed ($!)\n"; opendir DIR, "/perl/bin" or die " opendir failed ($!) \n"; while (defined ($entry = readdir DIR)) { if (-f $entry) { $size += -s _; } elsif (-d _ and $entry ne '.' and $entry ne '..') { $size += -s _; push @subDirs, $entry; } } closedir DIR or die " closedir failed ($!)\n"; foreach $dir (@subDirs) { $size += \&Sizes ($dir); } chdir '..' or die " chdir .. failed ($!)\n"; return $size; }