Why, and how can it be fixed?
print &DirSize( "Projects" );sub DirSize {
use POSIX;
my ( $path ) = @_;
my $dirSize;
my ( @dirContents, $name, $fileName );if ( -f $path ) { die "Not a directory!\n"; }
opendir ( DIR, $path ) or die "Can't open directory $path!\n";
@dirContents = grep (/[^\.]/, readdir(DIR));# remove . i ..
foreach $name (@dirContents) {
$fileName = $path."\\".$name;# if it is file, add size, otherwise recursively call DirSize
if (-f $fileName) {
${$dirSize} = ${$dirSize} + (stat($fileName))[7];
}
else {DirSize($fileName, \${$dirSize}); }
}
return (floor(($dirSize/1048576)*100)/100) . " MB";
}
#!/usr/bin/perl
use strict;
use warnings;
print &DirSize( "..\\cgi" );
sub DirSize {
use POSIX;
my $path = shift;
my $dirSize = shift ¦¦ 0;
my ( @dirContents, $name, $fileName );
if ( -f $path ) { die "Not a directory!\n"; }
opendir ( DIR, $path ) or die "Can't open directory $path!\n";
@dirContents = grep (/[^\.]/, readdir(DIR));# remove . i ..
foreach $name (@dirContents) {
$fileName = $path."\\".$name;
# if it is file, add size, otherwise recursively call DirSize
if (-f $fileName) {
$dirSize += (stat($fileName))[7];
}
else {
DirSize($fileName, $dirSize);
}
}
return (floor(($dirSize/1048576)*100)/100) . " MB";
}