美文网首页
Perl中的文件测试操作符

Perl中的文件测试操作符

作者: dulunar | 来源:发表于2019-09-26 05:08 被阅读0次

内置函数文件操作

Perl中可以通过两个内置函数stat(),lstat()计算文件大小;

my @stat = stat "/path/of/the/file/filename";

lstat()、stat()会返回一个13个元素的数组,每个元素有各自的含义:

  1. dev :文件所属文件系统的设备ID
  2. inode :文件inode号码
  3. mode :文件类型和文件权限(两者都是数值表示)
  4. nlink :文件硬链接数
  5. uid :文件所有者的uid
  6. gid :文件所属组的gid
  7. rdev :文件的设备ID(只对特殊文件有效,即设备文件)
  8. size :文件大小,单位字节
  9. atime :文件最后一次访问的时间戳(从1970-01-01开始计算的秒数)
  10. mtime :文件最后一次修改的时间戳(同上)
  11. ctime :文件创建的时间戳(同上)
  12. blksize :文件所属文件系统的磁盘块大小
  13. blocks :文件占用block数量(一般是512字节的块大小,可通过unix的stat -c "%B"获取块的字节)

这里需要注意,给出的时间是一个数字,需要转换;

my $atime = (lstat "/home/luna/LunaDisk/refine-master/AnnoPipeline.V1.pl")[8];
print "$atime\n";
##输出是:   1568920688
my $trantime = localtime $atime;
print "$trantime\n";
##输出是:  Thu Sep 19 21:18:08 2019

Perl中的文件测试操作符

文件大小测试符:

-e 文件或者目录存在
-z 文件是否存在且为空(对目录而言,永远为假)
-s 文件是否存在且不为空,返回值是文件大小,单位为字节

文件类型测试符

-f 文件是否为普通文件
-d 文件是否为目录文件
-l 文件是否为软链接(字符链接)
-b 文件是否为块设备
-c 文件是否是字符设备文件
-p 文件是否为命名管道
-S 文件是否为socket文件

权限类测试符

首先区分一下
Real uid:文件调用者的uid
Effective uid:文件调用最后生效的uid

-r 文件或目录(对effective uid)是否可读
-w 文件或目录(对effective uid)是否可写
-x 文件或目录(对effective uid)是否可执行
-o 文件或目录(对effective uid)的所有者

-R 文件或目录(对real uid)是否可读
-W 文件或目录(对real uid)是否可写
-X 文件或目录(对real uid)是否可执行
-O 文件或目录(对real uid)的所有者

-u 文件或目录是否设置了setuid (setuid只对可执行普通文件有效)
-g 文件或目录是否设置了setgid (setgid只对普通文件或目录有效)
-k 文件或目录是否设置了sticky (sticky属性只对目录有效)

其它测试符

-M 最后一次修改(mtime)距离目前的天数,修改的年龄
-A 最后一次访问(atime)距离目前的天数,访问的年龄
-C 最后一次inode修改(ctime)距离目前的天数
-M/-A/-C会计算天数,它是(小时数/24)来计算的。例如,6小时前修改的文件,它的天数就是0.25天。

-T 文件看起来像文本文件
-B 文件看起来像二进制文件
-t 文件句柄是否为TTY设备(该测试只对文件句柄有效)

Perl文件测试操作和stat函数
Perl文件测试

相关文章

  • 文件测试

    文件测试操作符 Perl提供了一组用于测试文件的操作符,并借此返回特定的文件信息。 -e测试文件是否存在 -M返回...

  • Learning Perl 学习笔记 Ch12 文件测试和按位操

    Perl提供了一组文件测试操作符,可以测试文件的各种属性。文件测试操作符看起来像是由一个连字符-和一个字母组成的,...

  • [perl] 批量读参数

    glob perl中通过文件操作符glob提供相当于shell中的指定多个文件的“通配符”语法功能 参考:perl...

  • Perl中的文件测试操作符

    内置函数文件操作 Perl中可以通过两个内置函数stat(),lstat()计算文件大小; lstat()、sta...

  • 条件测试操作与流程控制语句

    【测试文件】 格式:[ 操作符 文件或目录 ] 操作符: ● -d :测试是否为目录,是则为真 ●-e: 测试文件...

  • 第四章 Perl操作符

    Perl操作符就是Perl语法中的一系列符号。每一个操作符都有零个或多个操作数。可以把操作符看成是一系列特别的函数...

  • Perl 6 中的 S/// 操作符

    Perl 6: S/// 操作符 By Zoffix Znet 来自 Perl 5 背景的我, 第一次使用 Per...

  • Shell | 控制流

    条件测试1.1 数值大小测试1.2 字符串测试1.3 文件测试1.4 逻辑操作符 判断 循环3.1 continu...

  • 【perl】perl的文件处理(四)——文件测试运算符

    文件测试运算符 运算符举例结果-r-r'file'可以读取file,则返回真-w-w $a$a中包含的文件名是可以...

  • perl中的比较操作符

    1. 算术操作符 +、-、、/、*、% 2. 整数比较操作符 >、>=、<、<=、==、!=、<=> 注:<=>(...

网友评论

      本文标题:Perl中的文件测试操作符

      本文链接:https://www.haomeiwen.com/subject/uyhsuctx.html