我使用File :: Find - > find(\&f,$ directory)来查找包含某些内容的文件.我的代表的相关部分如下:
sub f {
my $file = $File::Find::name;
return unless -f $file;
return unless $file =~ /$file_pattern/;
etc...
Run Code Online (Sandbox Code Playgroud)
但问题是,每次当前目录中不存在$ file时,此代码都会返回.例如对于文件./test它很好,但对于文件./dir/test这个返回...
有没有更好的方法来知道$ file是否是文件?
这条线
return unless -f $file;
Run Code Online (Sandbox Code Playgroud)
如果$ file不是文件(它可能是文件夹)将返回
这条线
return unless $file =~ /$file_pattern/;
Run Code Online (Sandbox Code Playgroud)
如果文件名不包含$ file_pattern,则返回.
请注意,根据文档,此子f()不会告诉File :: Find要查找哪些文件...
wanted()函数对每个文件和目录进行任何验证.请注意,尽管名称如此,但want()函数是一个通用的回调函数,并且不会告诉File :: Find文件是否"需要".实际上,它的返回值被忽略了.
要查找文件夹中的所有文件,您可能会发现使用File :: Find :: Rule更加容易.这是一个来自文档的例子......
my @files = File::Find::Rule->file()
->name( '*.pm' )
->in( @INC );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |