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保留的六个文件句柄:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值