文件与目标操作

-- 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



 

你可能感兴趣的:(perl)