您的位置:首页 > 其它

Learning Perl(Perl语言入门)学习笔记(10)

2009-01-21 19:10 351 查看
第十一章 文件测试

1、 文件测试操作符及其含义:
-r 文件或目录,对目前(有效的)用户或组来说是可读的;
-w 文件或目录,对目前(有效的)用户或组来说是可写的;
-x 文件或目录,对目前(有效的)用户或组来说是可执行的;
-o 文件或目录,由目前(有效的)用户所拥有;
-R 文件或目录,对实际的用户或组来说是可读的;
-W 文件或目录,对实际的用户或组来说是可写的;
-X 文件或目录,对实际的用户或组来说是是可执行的;
-O 文件或目录,由实际用户所拥有;
-e 文件或目录,是存在的;
-z 文件存在而且没有内容(对目录来说永远为“假”)
-s 文件或目录存在而且有内容(返回值是以字节为单位的文件大小)
-f 文件句柄是纯文本;
-d 文件句柄是目录;
-l 文件句柄是符号链接;
-S 文件句柄是socket;
-p 文件句柄是具名的管道(一个“FIFO”);
-b 文件句柄是特殊块式文件(像一个挂载的磁盘设备);
-c 文件句柄是特殊字符式文件(像一个I/O设备);
-u 文件或目录具有setuid属性;
-g 文件或目录具有setgid属性;
-k 文件或目录设定了sticky位;
-t 文件句柄是TTY设备(文件名不能进行此测试,TTY设备有交互能力,如键盘);
-T 文件看起来像“文本”(text)文件;
-B 文件看起来像“二进制”(binary)文件;
-M 文件上一次被更改到现在已经多少天了;
-A 文件上一次被访问到现在已经多少天了;
-C 文件的inode被更改到现在已经多少天了;
2、 stat 函数用来返回文件属性的全部13种信息,返回值可能是空列表,表示stat函数执行失败,也可能是含有13个元素的列表,期内容可用如下由标量构成的列表来描述:
my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($filename)
其中,
$dev表示设备编号
$ino表示文件inode编号
$mode表示文件权限位集合
$nlink表示当前文件或目录的硬链接数目
$uid和$gid是文件拥有者的用户标识符及组标识符
$size表示以字节为单位的文件大小
$atime、$mtime和$ctime是时间戳,以系统的时间格式来表示,是一个32位的整数,表示从纪元(Epoch)算起的秒数。
3、 在符号链接指向的对象存在的情况下,对符号链接的名称调用stat 函数返回的是符号链接所指向对象的信息,而非符号链接本身;要查看符号链接本身的信息,可以使用lstat 函数;如果lstat后面的参数不是符号链接,将返回跟stat一样的信息;
4、 时间戳通常是一32位的整数,可以使用localtime函数将之转为便于阅读的形式;在标量上下文中,其返回值通常是形如“Fri Aug 13 00:21:38 2010”的字符串,而在列表上下文返回的则是类似于如下由标量列表来描述的信息:
my($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime 1281630098
其中,$year是一个自1900年起算的年数,返回值加上1900才是当前的实际年份;$yday 表示目前是今年的第几天(0-365);
5、 gmtime 函数使用方法类同localtime,但返回值是世界标准时间;time 函数可以从系统时钟取得当前时间;
6、 逐位运算操作符:
& 逐位and
| 逐位or;
<< 逐位左移,用0填补最低位;
>> 逐位右移,丢弃移出的位;
~ 逐位取反;
说明:逐位操作运算符既可以对位串进行操作,也可以对整数进行操作;如果操作数均为整数,结果亦为整数;
7、 程序里每次使用stat、lstat或是某个文件测试操作符时,Perl都必须到外面向系统请求该文件的stat缓冲区,哪怕是仅仅为了同时测试某文件是否可读以及是否可写也要进行两次操作;为了避免类似的重复操作,可以将第二次及以后的stat、lstat或文件测试指向特殊的文件句柄_(下划线),但前提是要在能确保缓冲区未被覆盖;本文出自 “Marion的BLOG” 博客,请务必保留此出处http://marion.blog.51cto.com/22948/135221
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: