次のコードでスマート マッチングを使用するためにいくつかの例に従おうとしましたが、失敗しました (何も除外されませんでした)。ここでスマート マッチングを使用して、一度に複数の正規表現と照合するにはどうすればよいですか?
my $regexes_to_filter_a = ("tmp", "temp", "del")
my @organism_dirs = (); # this will hold final list of dirs to processs
my @subdirs = File::Find::Rule->directory->maxdepth(1)->in($root_dir);
foreach my $subdir (@subdirs) {
my $filter = 0;
# IMPROVE: can do smart matching here
foreach my $regex ( @{$regexes_to_filter_a} ) {
if ( basename($subdir) =~ $regex ) {
$filter = 1; # filter out this dir
last;
}
}
unless ($filter) {
push @organism_dirs, $subdir;
}
}