-e | 文件是否存在 |
-f | 文件是普通文件 |
-d | 文件是目录 |
-r | 文件是否可读 |
-w | 文件时候可写 |
-x | 文件是否可执行 |
-s | 文件存在且大小非零,返回文件大小的字节数 |
-z | 文件存在且大小为0 |
-B | 文件是二进制文件 |
-T | 文件是文本文件 |
-A | 距离上次文件被访问年限 |
-M | 距离上次文件被修改年限 int(var) 函数取整 |
-C | 距离创建文件的年限 |
更改访问许可权限
chmod (mode , fileList) mode为四位数字, 0XXX
文件重命名:
rename (fileName, newFileName)
注:创建新文件,旧文件删除,如果已存在newFileName文件则覆盖 。成功返回1
删除文件
unlink (fileList) 即删除所有硬链接,返回删除文件个数
文件通配:
glob("标识") # 引号不能少
<"标识">
标量环境:返回匹配的第一个文件
列表环境:返回匹配的文件列表
目录操作:
opendir (DIR, fileDir)
readdir(DIR) 返回文件列表
closedir DIR
需求实例:遍历一个文件夹,并将其中的某些文件更名

# 目录操作函数可以在相对路径下工作
use
strict;
use
warnings;

sub
changeName {
chdir
shift
;
print
`pwd`;
#
打印当前目录
for
my
$file
(
glob
(
"
*
"
)) {
#
glob不会包含.和.. 目录
if
(
-
d
$file
) {
chdir
(
$file
);
#
子目录一直保持在当前目录工作
&
changeName(`pwd`);
chdir
(
"
..
"
);
}
elsif
(
-
f
$file
&&
$file
=~
/
(
.+
)(
.
logbak)$
/
i) {
if
(
-
f $
1
.
"
.log
"
) {
#
防止更名误覆盖文件
rename
($
1
.
"
.log
"
,
$
1
.
"
.newlog
"
);
}
rename
(
$file
,
$
1
.
"
.log
"
);
}
}
}

&
changeName(
shift
);
#
参数为目标目录

my
$path
=
`pwd`;
chomp
$path
;
#
`pwd`命令结尾有个回车符,需要chomp去掉
print
"
$path
"
;
opendir
DIR
,
$path
||
die
"
cant open $!
"
;
foreach
my
$file
(
readdir
DIR) {
#
readdir 将读出所有的文件和目录,包括.和..
print
"
$file
"
;
}































