Perl 小骆驼 11章笔记 文件检验

第十一章 文件检验

文件检测操作

是否存在同名文件 -e 文件名
die "Oops! A file called '$filename' already exists.\n"
  if -e $filename;

文件多少天内被修改 -M 文件句柄
warn "file is looking pretty old!\n"
  if -M CONFIG > 28;

文件〉100k,且90天内未被访问
if -s $filename > 100_100 and -A $filename > 90;

-r 可读
-w 可写
-x 可执行
-o 所有
-R W X O 分别对real user/group 可读/写/执行/所有
-e 文件/目录存在
-z 文件存在,大小为0
-s 文件/目录存在,大小大于0
-f 普通文本
-d 目录
-l 符号链接
-S socket
-p 为管道
-b block-special文件,如挂载磁盘
-c character-special文件, 如i/o设备
-u setuid的文件/目录
-g setgid的文件/目录
-M 修改的时间
-A 访问的时间
-C 索引节点修改时间

----------------------------
stat和lstat函数

my

($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctim

e,$blksize,$blockes) = stat($filename);

$dev和$ino: 文件的设备号和索引节点号。即便它有hard link,设备号和索引节点号的组合

仍是唯一的。

$mode: -rwxr-xr-x 类似

$nlink文件或目录的(硬)连接数

$uid, $gid:user id and group id

$size: 大小。单位是字节

$atime, $mtime, $ctime:按照系统的时间格式:32位,表示从某个时刻到现在所经过的秒

数。

当stat的参数是符号连接时,返回的是所指向实体的信息,而不是符号连接本身的信息。
lstat用来得到符号连接本身的信息。
如果不是符号连接,stat/lstat返回值相同。

----------------------------
localtime函数

my $timestamp = 1180630098;
my $date = localtime $timestamp;

my($sec,$min,$hour,$day,$mon,$year,$wday,$yda,$isdst)
  = localtime $timestamp;

$mon 0 to 11
$year 从1900到现在的年份数
$wday 0 to 6
$yday 0 to 364/365

gmtime 返回世界时间
time 得到当前时间

----------------------------
4位操作

与&
或|
异或^:有且仅有1,才为1
<>>:位右移
~: 取反

----------------------------
使用特殊的下划线文件句柄
对_这个文件句柄操作时,返回前一个文件的结果.

 

当使用stat, lstat, file检测时,会分配一块stat buffer.

 

 

 

习题:

1。

foreach (@ARGV) {
  print "$_";
  if (-r) {print " readable "; } else {print " not readable ";}
  if (-w) {print " writeable "; } else {print " not writeable ";}
  if (-x) {print " executable ";} else {print "not executable ";}
  if (-e) {print " exists ";} else  {print "not exists ";}

  print "\n";
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11903161/viewspace-689424/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11903161/viewspace-689424/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值