ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Perl 小骆驼 11章笔记 文件检验

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

原创 Linux操作系统 作者:zhaojienju 时间:2011-03-14 17:51:24 0 删除 编辑

第十一章 文件检验

文件检测操作

是否存在同名文件 -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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-10-05

  • 博文量
    80
  • 访问量
    192590