现在的位置: 首页 > 综合 > 正文

perl 文件检测操作

2018年08月05日 ⁄ 综合 ⁄ 共 1233字 ⁄ 字号 评论关闭

 

文件检测操作

是否存在同名文件 -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.

抱歉!评论已关闭.