【发布时间】:2016-06-08 14:41:30
【问题描述】:
我正在尝试使用File::Find::Rule 仅将子文件夹的名称(非递归)复制到一个数组中。我还想排除数组@exclude_dirs中提到的目录名称
#!/usr/bin/perl
use strict;
use warnings;
use File::Find::Rule;
use Data::Dumper;
my $basedir = "C:\/Test";
my @exclude_dirs = qw( dir1_excl dir2_excl );
my @subdirs = File::Find::Rule
->directory()
# ->name(@exclude_dirs)->prune->discard, File::Find::Rule->new
->maxdepth(1)
->in( $basedir );
print Dumper(\@subdirs);
所需的输出
$VAR1 = [
'dir1',
'dir2',
'dir3'
]
电流输出
$VAR1 = [
'C:/Test',
'C:/Test/dir1',
'C:/Test/dir1_excl',
'C:/Test/dir2',
'C:/Test/dir2_excl',
'C:/Test/dir3'
]
【问题讨论】:
-
qw引用以空格分隔的单词。去掉逗号,添加一些空格。 -
修改了代码,但我仍将如何构建规则以排除那些
-
老实说,File::Find::Rule 对此太过分了。我会改用
readdir。 -
@ikegami 你当然有权发表这种意见。