第十二章 文件测试
1. 文件测试操作符
-r:文件或目录对此(有效的)用户(effective user)或组是可读的
-w:文件或目录对此(有效的)用户或组是可写的
-x:文件或目录对此(有效的)用户或组是可执行的
-o:文件或目录由本(有效的)用户所有
-R:文件或目录对此用户(real user)或组是可读的
-W:文件或目录对此用户或组是可写的
-X:文件或目录对此用户或组是可执行的
-O:文件或目录由本用户所有
-e:文件或目录名存在
-z:文件存在,大小为0(目录恒为false)
-s:文件或目录存在,大小大于0(值为文件的大小,单位:字节)
-f:为普通文本
-d:为目录
-l:为符号链接
-S:为socket-p 为管道(Entry is a named pipe(a“fifo”))
-b:为block-special 文件(如挂载磁盘)
-c:为character-special 文件(如I/O 设备)
-u:setuid 的文件或目录
-g:setgid 的文件或目录
-k:File or directory has the sticky bit set
-t:文件句柄为TTY(系统函数isatty()的返回结果;不能对文件名使用这个测试)
-T:文件有些像“文本”文件
-B:文件有些像“二进制”文件
-M:修改的时间(单位:天)
-A:访问的时间(单位:天)
-C:索引节点修改时间(单位:天)
print "$filename \n" if -s $filename > 100_000 and -A $filename > 90;
our $size_in_k = (-s) / 1024; # 即 -s $_ , 必须带括号
foreach (@filelist) {
print "$_ is readable\n" if -r ; /*即 -r $_
}
if ( -e $filename and -r $filename ) {}
if ( -e $filename and -r _ ) {} # _代表上回查询的文件
if ( -r -w -x -o -d $filename ) {} #栈式测试,靠近文件名的先执行
2. stat、lstat、localtime、gmtime、time函数
time 函数可以从系统时钟取得当前时间;
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($filename)
lstat查看符号链接文件本身的属性。
my ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime; # localtime(time())
3. 位运算
&按位与 |按位或 ^按位异或 ~按位取反(对串和整数都可使用) <<左移 >>右移