文件和目录:
-X FILEHANDLE/EXPR/DIRHANDLE
文件测试:
-r file 文件对当前有效用户或组可读
-w file 文件对当前有效用户或组可写
-x file 文件对当前有效用户或组可执行
-o file 文件对当前有效用户或组拥有
-R file 文件对当前实际用户或组可读
-W file 文件对当前实际用户或组可写
-X file 文件对当前实际用户或组可执行
-O file 文件对当前实际用户或组拥有
-z file 文件存在且没有内容
-s file 文件存在且有内容,返回文件大小的字节数。
-f fiel 指定file是否为常规文件
-d file 文件存在并且是目录
-l file 文件是软连接(符号链接)
-b file 文件存在且是块设备
-c file 文件存在且是字符设备
-p file 文件存在并且是管道
-S file 文件存在并且是socket
-u file 文件设置了setuid位
-g file 文件设置了setgid位
-k file 文件设置了粘滞位
-t file 文件句柄是tty设备
-T file 看起来像文本文件
-B file 看起来像二进制文件
-M file 最有一次修改后至今的天数
-A file 最后一次访问后至今的天数
-C file 最后一次文件节点变更至今的天数
多个测试:
and 用来测试多个条件与
or 用来测试多个条件或
_ 特殊字符表示虚拟文件句柄,告诉perl使用上次查询过的文件信息来做当前的测试。
if (-r $file and -w _) {
print “the file is both readable andwritable!\n”;
}
栈式文件测试:
适用于使用返回值为真假的情况。
返回数值的不要使用。
use 5.010
if (-w -r $file) {
print “the file is both readable andwritable!\n”;
}
文件句柄:
Perl保留的六个文件句柄:
STDIN\STDOUT\STDERR
DATA\ARGV\ARGVOUT
open函数:打开句柄
文件句柄使用大写表示。
open FH, ”filename”; #创建文件句柄
open FH, “< filename”;/open FH, “<”, “filename”; #创建输入文件句柄
open FH, “> filename”;/open FH, “>”, “filename”; #创建输出文件句柄
open FH, “>> filename”;/open FH, “>>”,“filename”; #创建输出文件的追加句柄
处理打开句柄出错:
my $res = open FH,“>> filename”;
if (! $res) {
print “open failed\n”;
}
open FH, “filename”
or die “cat not open file :$ ! ”;
<FH>使用文件句柄:
<FH>表示行输入操作符,每次读取一行。
While (<FH>) {
…
}
print FH …; #输出到输出文件句柄指向的文件。
printf FH …; #不用括号也可以
printf FH (…); #文件句柄在括号外也可以
printf (FH …); #文件句柄在括号内也可以
statFILEHANDLE/EXPR/DIRHANDLE:
返回包含13个数字元素的列表:
my($dev-设备编号, $ino-inode编号, $mode-文件权限位集合, $nlink-硬链接数, $uid,$gid, $rdev,$size-文件字节数,$atime, $mtime, $ctime, $blksize, $blocks) = stat($filename);
$n = (stat($filename))[N];
lstat EXPR/FILEHANDLE/DIRHANDLE:
和stat一样,但是用于符号链接,返回符号链接本身的信息,符号链接使用stat返回的是源文件的信息.
chdir EXPR/FILEHANDLE/DIRHANDLE:
默认切换到$HOME。
glob EXPR:
进行模糊匹配,支持*,多个用空格隔开。
my @files = glob “*”;
perl name.pl *.ext #命令行通配,shell会匹配*.ext然后传给perl程序。
my @files = <*>; #使用<>进行通配,和glob一样。
unlink LIST:
删除文件,成功返回删除的文件数量.
删除硬连接和软连接(并非符号链接指向的东西)
unlink glob “*.bak”;
rename OLDNAME, NEWNAME:
重命名文件。
link OLDFILE, NEWFILE
创建硬连接
symlink OLDFILE,NEWFILE
创建软连接
readlink EXPR
返回符号链接指向的位置
mkdir FILENAME,[MASK]
创建目录
mkdir $FILENAME,0755; #使用八进制
mkdir $FILENAME, oct($PERM);
rmdir FILENAME
删除空目录,如果是非空目录,需要先用unlink清空再删除。
opendir
readdir
telldir
rewinddir
seekdir
closedir
chmod LIST:
更改文件或目录权限
chmod 0755, $FILENAME1, $FILENAME2, …;
chomd oct($MODE);
chown LIST:
更改文件或目录属主和属组
chown $uid,$gid, $filename, …;
chroot
umask
utime
fcntl
ioctl