看看File::Find。您甚至可能以前使用过它。它是许多 Perl 程序员曾经使用的首批 Perl 模块之一。
该find命令有两个参数:
假设我想在我的目录中查找所有后缀为.txt. 在 Unix 中,我可以这样做:
$ find $directory -type f -name "*.txt"
在 Perl 中,我创建了一个名为wanted. 该find命令将通过Perl 变量wanted将我目录中的一个元素传递给我的子例程。$_然后我可以测试该元素以查看它是否是具有.txt后缀的文件:
sub wanted {
return unless -f; #Return unless $_ is a file
return unless /\.txt$/; #Return unless that file has a `.txt` suffix
print "$Find::File::name\n"; #It's a file that ends with .txt. Print it.
}
现在,我所要做的就是将我的wanted子程序作为我的find命令的第一个参数:
find ( \&wanted, $directory );
这里的所有都是它的。一个真实的例子,你很快就会(如果你还没有)遇到。在 C 编程语言中,wanted子例程称为回调例程。