在 Perl 中,当我尝试dir
循环读取并执行for each file stat()
以获取$size
and$mode
时,我得到了错误的数据!
例如,我刚刚创建了简单的文本文件,它显示它有权限 0000 并且没有大小。
Perl 代码:
if (!@ARGV[0]) {
die("Za mało parametrów!\n");
}
$dirname = @ARGV[0];
opendir(DIR, $dirname) || die("Nie mogę otworzyć katalogu!\n");
while( $filename = readdir(DIR) ) {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename);
$perm = sprintf("%04o", $mode & 07777);
$tmp1 = int(($size/1024));
$tmp2 = length($filename);
if (($tmp1 > $tmp2) && ($perm =~ /.[^5410]../)) {
print("$filename\n");
}
}
closedir(DIR);