使用File :: Find :: Rule从数组中排除root / base目录

时间:2016-03-18 05:25:10

标签: perl file-handling

我正在尝试使用File :: Find :: Rule读取子目录,但我的代码也在打印/读取基本目录以及子目录。如何更正cvs示例(http://search.cpan.org/~rclamp/File-Find-Rule-0.34/lib/File/Find/Rule.pm)方法的使用,该方法已在一些类似帖子中进行了解释。我的代码看起来像 -

 use File::Find::Rule;
my $directory = './test_dir/';
my $rule = File::Find::Rule->new; $rule -> or($rule ->new
        -> directory
        ->name('test_dir')
        ->prune
        ->discard,
          $rule->new);
my @subdirs = $rule->in($directory);

仍然在@subdir中列出./test_dir。

1 个答案:

答案 0 :(得分:0)

您可以使用grep排除搜索目录。

my @subdirs = grep { $_ ne $directory } $rule->in($directory);

在这种情况下,您必须更改$directory的内容以匹配File :: Find输出它的方式。没有尾部斜杠,也没有前导./。只需使用名称或直接相对路径。

my $directory = 'test_dir';   
my $other_dir = 'foo/bar/baz'; # multi-level depths would look like this