本章介绍如何改变目录树,如何使用目录句柄以读取目录中的文件列表等。
1.改变目录树
chdir操作符可以改变工作目录。就像Unix中shell的cd命令:
chdir "/etc" or die "can not chdir to /etc:$!";
2.目录句柄
可以使用目录句柄(directory handle)来指定目录的文件列表。目录句柄在外表和操作方式上都很像文件句柄,你可以打开它(opendir)、读取它(readdir)还可以关闭它(closedir)。不过与读出文件的内容不同的是,你读出来的是目录中的文件(和其它东西)的名字。譬如:
my $mydir = "/etc";
opendir MYDIR, $mydir or die "Can not open $mydir:$!";
foreach $file (readdir MYDIR) {
print "one file in $mydir is $filen";
}
这里需要注意的一点是readdir操作符返回的文件名没有路径名部分,它仅仅是目录内的名字。因此,在上例中,对于/etc/passwd,$file的值为passwd而不是/etc/passwd。所以,需要我们自己把名字补齐来以得到全名:
my $mydir = "/etc";
opendir MYDIR, $mydir or die "Can not open $mydir:$!";
while (my $name = readdir MYDIR) {
next if $name =~ /^./; #跳过以点开头的文件
$name = "$mydir/$name"; #补上路径
next unless -f $name and -r $name; #只要可读文件
...
}