-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