-2
主题。我试图在不使用查找模块并且不使用du命令的情况下获取目录的大小。以下是我目前正在接近它的方式,但似乎并没有返回正确的尺寸。它返回418836字节,但是当我运行du -s目录大小是141508.Perl - 获取目录大小,但不包含查找或du
my $size = dir_size('wp-content');
sub dir_size {
my $dir = shift;
my $size = 0;
opendir(DIR,"$dir");
foreach my $node (grep(!/^\.\.?/,readdir())) {
stat($node);
if(-f $node) {
$size += -s $node;
} elsif(-d $node) {
$size += dir_size("$dir/$node");
}
}
closedir(DIR);
return $size;
}
希望有人能指出我做错了什么。
检查opendir的成功。 – toolic 2015-02-05 17:01:37
通过“查找模块”,我假定你的意思是['File :: Find']](http://perldoc.perl.org/File/Find.html)。你不想使用它的任何特定原因?这是一个核心模块。 – ThisSuitIsBlackNot 2015-02-05 17:06:17
'stat'并不能给你一个特别好的方法,但它可以做到。但在试图重新发明核心模块时要非常小心。 'File :: Find'已经相当成熟,并且可以处理符号链接,各种水果文件名以及各种可以捕捉不必要的东西。 虽然,你真的在使用'stat'的结果吗? – Sobrique 2015-02-05 17:10:17