File::Find 搜索目录和子目录,使用模式匹配将成功匹配存储到数组

use*_*181 1 perl

  1. 我要匹配的模式是 *_name.txt

  2. 我要搜索的目录是 $dir($dir 有很多子目录,这就是为什么我需要File::Find而不是glob

  3. 我不会使用Find::Find::Rule(我知道它有简单的代码,但是当我运行时,它有不存在的文件错误。我不想向我的 perl 库添加其他文件)

我到目前为止的语法是

use File::Find;
find(\&store_foundfiles,$dir);
sub store_foundfiles {
  my @string = *_name.txt;
  #I DONT KNOW FROM HERE ON"
  #I WANT TO IMPLEMENT THE FOLLOWING...
  #FOREACH MATCH ON @string, STORE THE MATCH TO ARRAY '@found'
}
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 5

添加这个是因为大多数人可能应该为此使用File::Find::Rule,即使您有理由不这样做:

use File::Find::Rule;
my @files = File::Find::Rule->file->name("*_name.txt")->in($dir);
Run Code Online (Sandbox Code Playgroud)