加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl: 文件和目录

发布时间:2020-12-15 23:45:50 所属栏目:大数据 来源:网络整理
导读:文件和目录: ? -X ??FILEHANDLE/EXPR/DIRHANDLE? 文件测试: ? -r???????? file????????????????????????????? 文件对当前有效用户或组可读 -w?????? file????????????????????????????? 文件对当前有效用户或组可写 -x???????? file???????????????????????

文件和目录:

?

-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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读