find通常被用来查找特定路径下的特定文件,用来搜索文件名非常有用,是perl中使用非常广泛的文件操作函数。
先看个例子:
use File::Find;
find(\&PrintName, @curDir);
sub PrintName{
my $path;
if (/$reg/) {
$path = $File::Find::name;
$path =~ s/\//\\/g;
$path =~ s/\\+/\\/g;
print LST "$path\n";
}
}
这是一个find函数的经典使用方法。它包含在FILE模块中,有两个参数。第一个一般为子程序,第二个为搜寻的路径。这里路径是用列表表示的,可以存放多个路径,即可以同时对几条路径进行搜索。每遇到一个文件,子程序都会被调用。我们需要判断,找到的文件是否与我们想要的文件相匹配。
File::Find方式具有特殊变量,将被赋予特定的信息,显示如下:
(1)$_包含目录中的当前文件名
(2)$File::Find::dir包含当前目录名
(3)$File::Find::name包含$File::Find::dir/$_
在寻找过程中,我们都位于目录$File::Find::dir下。这是可以用正则表达式选出我们寻找的文件。注意在匹配时“$”代表一个字符串最后的匹配而“^”代表与开头匹配。