perl中stat函数怎么计算文件的大小

如题所述

perl下的stat函数和shell下的stat命令的功能基本一致,也是取得文件的各类具体信息:

stat()函数返回一个数组,下面是数组各个元素的含义:

0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
1 ino 索引节号 总是0
2 mode 文件的方式 无
3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
4 uid 文件所有者的用户ID(UID)总是0
5 gid 文件所有者的组ID(GID)总是0
6 rdev 特殊文件信息 驱动器号(重复)
7 size 文件大小(以字节计)文件大小(以字节计)
8 atime 上次访问的时间 上次访问的时间
9 mtime 上次修改的时间 上次修改的时间
10 ctime Inode修改时间 文件的创建时间
11 blksz 磁盘块的大小 总是0
12 blocks 文件中的块的数量 总是0

例子:
获取某个文件的创建时间和最后一次修改时间,

my @array = stat("test.html");
print "$array[10]\n";
print "$array[8]\n";
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-04
my @args = stat ($filename);
my $size = $args[7];
stat()函数返回一个数组。下面是数组各元素的含义。
0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
1 ino 索引节号 总是0
2 mode 文件的方式 无
3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
4 uid 文件所有者的用户ID(UID)总是0
5 gid 文件所有者的组ID(GID)总是0
6 rdev 特殊文件信息 驱动器号(重复)
7 size 文件大小(以字节计)文件大小(以字节计)
8 atime 上次访问的时间 上次访问的时间
9 mtime 上次修改的时间 上次修改的时间
10 ctime Inode修改时间 文件的创建时间
11 blksz 磁盘块的大小 总是0
12 blocks 文件中的块的数量 总是0
例:获取文件时间
my @array = stat("mysql.tar.gz");
print "$array[9]\n";

$size=(stat)[7]
$size=(stat filename)[7]
perl中的文件测试参数
-r 文件或是目录对该(有效)用户或组可读
-w 文件或是目录对该(有效)用户或组可写
-x 文件或是目录对该(有效)用户或组可
-o 文件或是目录被该(有效)用户所有

-R 文件或目录对该实际用户或组可读
-W 文件或目录对该实际用户或组可写
-X 文件或目录对该实际用户或组可执行
-O 文件或目录被该实际用户所有

-e 文件或目录存在
-z 文件存在,大小为零,判断文件是否大小为零(对目录总为假)
-s 文件存在,大小非零(即,文件大小,单位为字节)

-f 条目是个普通文件
-d 条目是个普通目录
-l 条目是个符号连接
-S 条目是个套接字
-p 条目是个命名管道(一个fifo)
-b 条目是个特殊(block-special)文件(如一个可装载磁盘)
-c 条目是个字符特殊(character-special)文件(如一个I/O设备)

-u 文件或目录是setuid
-g 文件或目录是setgid
-k 文件或目录的粘着位(sticky bit)被设置

-t 文件句柄是个TTY(可由isatty()系统函数返回;文件名不能由本测试来测试)

-T 文件像是个“文本”文件
-B 文件像是个“二进制”文件

-M 更改年龄(单位:天)
-A 访问年龄(单位:天)
-C Inode更改年龄(单位:天)本回答被网友采纳
第2个回答  2018-03-14
my @args = stat ($filename);
my $size = $args[7];
stat()函数返回一个数组。下面是数组各元素的含义。
0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
1 ino 索引节号 总是0
2 mode 文件的方式 无
3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
4 uid 文件所有者的用户ID(UID)总是0
5 gid 文件所有者的组ID(GID)总是0
6 rdev 特殊文件信息 驱动器号(重复)
7 size 文件大小(以字节计)文件大小(以字节计)
8 atime 上次访问的时间 上次访问的时间
9 mtime 上次修改的时间 上次修改的时间
10 ctime Inode修改时间 文件的创建时间
11 blksz 磁盘块的大小 总是0
12 blocks 文件中的块的数量 总是0
例:获取文件时间
my @array = stat("mysql.tar.gz");
print "$array[9]\n";

$size=(stat)[7]
$size=(stat filename)[7]
perl中的文件测试参数
-r 文件或是目录对该(有效)用户或组可读
-w 文件或是目录对该(有效)用户或组可写
-x 文件或是目录对该(有效)用户或组可
-o 文件或是目录被该(有效)用户所有

-R 文件或目录对该实际用户或组可读
-W 文件或目录对该实际用户或组可写
-X 文件或目录对该实际用户或组可执行
-O 文件或目录被该实际用户所有

-e 文件或目录存在
-z 文件存在,大小为零,判断文件是否大小为零(对目录总为假)
-s 文件存在,大小非零(即,文件大小,单位为字节)

-f 条目是个普通文件
-d 条目是个普通目录
-l 条目是个符号连接
-S 条目是个套接字
-p 条目是个命名管道(一个fifo)
-b 条目是个特殊(block-special)文件(如一个可装载磁盘)
-c 条目是个字符特殊(character-special)文件(如一个I/O设备)

-u 文件或目录是setuid
-g 文件或目录是setgid
-k 文件或目录的粘着位(sticky bit)被设置

-t 文件句柄是个TTY(可由isatty()系统函数返回;文件名不能由本测试来测试)

-T 文件像是个“文本”文件
-B 文件像是个“二进制”文件

-M 更改年龄(单位:天)
-A 访问年龄(单位:天)
-C Inode更改年龄(单位:天)
相似回答