perl: 文件和目录
文件和目录: ? -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保留的六个文件句柄: STDINSTDOUTSTDERR DATAARGVARGVOUT ? 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 failedn”; } ? 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,$filename,…; ? chroot umask utime fcntl ioctl (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |