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