操作目录,或者说操作目录句柄时,常用到 3 个函数:opendir , readdir 以及 closedir 。
opendir 打开目录,readdir 读取目录中的内容(文件名),closedir 关闭目录。
测试代码:
[Perl] 纯文本查看 复制代码 #!/usr/bin/perl
my $dir = "/etc";
opendir DH, $dir or die "can not open $dir: $!";
foreach $file (readdir DH) {
print "one file in $dir is \"$file\"\n";
}
closedir DH;
运行输出:# ./dirhandle.pl
one file in /etc is "."
one file in /etc is ".."
one file in /etc is "dbus-1"
one file in /etc is "grub.d"
one file in /etc is "ppp"
one file in /etc is "tcpxtract.conf"
one file in /etc is "rpc"
one file in /etc is "logrotate.conf"
... ... opendir 中的 DH 就是所获得的目录句柄,readdir 就用它来获取目录中的内容。readdir 获得的是目录中的文件名,包括普通文件名和目录名,但他们并不是全路径的,如果要打印出全路径,那么可以写成 “$dir/$file” 。
如果要找出目录下的某类文件,比如找出所有的 .txt 文件,那么可以:
[Perl] 纯文本查看 复制代码 whle ($name = readdir DH) {
next unless $name =~ /\.txt$/; #不匹配则 continue
#匹配.txt,可以做进一步处理
}
操作完该目录后,可以显式地使用 closedir 来关闭目录句柄,不然在程序退出时这个句柄也会被系统关闭。 |