29 lines
443 B
Plaintext
29 lines
443 B
Plaintext
|
|
|
|
###
|
|
### total_size
|
|
###
|
|
|
|
## Chapter 1 section 4
|
|
|
|
sub total_size {
|
|
my ($top) = @_;
|
|
my $total = -s $top;
|
|
my $DIR;
|
|
|
|
return $total if -f $top;
|
|
unless (opendir $DIR, $top) {
|
|
warn "Couldn't open directory $top: $!; skipping.\n";
|
|
return $total;
|
|
}
|
|
|
|
my $file;
|
|
while ($file = readdir $DIR) {
|
|
next if $file eq '.' || $file eq '..';
|
|
$total += total_size("$top/$file");
|
|
}
|
|
|
|
closedir $DIR;
|
|
return $total;
|
|
}
|