Perldir
で、ループで読み取り、取得するために実行for each file stat()
しようとする$size
と$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);