-- Start
文件测试
有时候我们需要判断某个文件是否存在,很简单,使用 -e 即可,下面是一个简单例子。
#!/usr/bin/perl
print "请输入路径和文件名:\n";
chomp (my $file = <STDIN>);
if(! -e "$file") {
print STDERR "找不到$file文件";
}
除此之外,我们还可以通过下面的操作符来测试文件的其他属性。
文件测试操作符 | 意义 |
-r | 文件或目录,对当前用户或组来说是可读的 |
-w | 文件或目录,对当前用户或组来说是可写的 |
-x | 文件或目录,对当前用户或组来说是可执行的 |
-o | 文件或目录,由当前用户拥有 |
-R | 文件或目录,对实际的用户或组来说是可读的 |
-W | 文件或目录,对实际的用户或组来说是可写的 |
-X | 文件或目录,对实际的用户或组来说是可执行的 |
-O | 文件或目录,由实际的用户拥有 |
-e | 文件或目录,是否存在 |
-z | 是否为空文件 |
-s | 返回文件或目录的大小 |
-f | 是否为普通文件 |
-d | 是否为目录 |
-l | 是否为符号链接 |
-S | 是否为socket |
-p | 是否为管道 |
-b | 是否为块设备 |
-c | 是否为字符设备 |
-u | 是否设置了setuid位 |
-g | 是否设置了setgid位 |
-k | 是否设置了sticky位 |
-t | 是否表示终端 |
-T | 是否为文本文件 |
-B | 是否为二进制文件 |
-M | 距上次修改的天数 |
-A | 距上次访问的天数 |
-C | 距上次访问文件的inode的天数 |
事实上,文件还有许多其他属性,遗憾的是它们没有对应的测试操作符,幸运的是我们可以通过函数 stat 来取得这些属性,有关 stat 的更详细介绍请参见此处。
文件操作
下面是一个对文件操作的简单例子。
#!/usr/bin/perl
# 从当前目录找到所有的mp3文件
my @files=glob "*.mp3"; # 方式 1
foreach my $file (@files) {
unlink $fike; # 删除文件
}
# 从当前目录找到所有的log文件
my @files=<*.log>; # 方式 2
foreach my $file (@files) {
rename "$file", "$file.bak" # 重命名
}
目录操作
在 Perl 中,我们可以通过文件句柄来操作一个文件,事实上,我们也可以通过目录句柄来操作目录,下面是一个简单的例子。
#!/usr/bin/perl
print "请指定一个目录:\n";
chomp (my $path = <STDIN>);
# 打开目录句柄
opendir DIR, $path or die "$!";
# 查看目录中的子目录及文件
foreach my $file (readdir DIR) {
print "$file\n";
}
# 关闭目录句柄
closedir DIR;
此外,Perl 还提供了一些操作目录的函数,如:chdir, mkdir, rmdir 等,更多关于如何操作文件和目录需要专用的模块。
-- 更多参见:Perl 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-07-12
-- Written by ShangBo on 2012-07-11
-- End