Для каждого пути в @Folders
необходимо проверить, соответствует ли какой-либо из исключенных путей начальному сегменту. Список :: MoreUtils :: none здесь пригодится, но его можно легко заменить другим grep
:
#!/usr/bin/env perl
use strict; use warnings;
use List::MoreUtils qw( none );
my @ExcludedFolders = map qr{^$_}, qw'
/this/is/folder/path/one/exclude
/this/is/folder/path/three/exclude
/this/is/folder/path/five/exclude
';
my @Folders = qw'
/this/is/folder/path/one/exclude/some/file.dat
/this/is/folder/path/two/exclude/some/file.dat
/this/is/folder/path/three/exclud/some/file.dat
/this/is/folder/path/four/excludee/some/file.dat
/this/is/folder/path/five/exclude/some/file.dat
/this/is/folder/path/six/exclude/some/file.dat
';
@Folders = grep {
my $folder = $_;
none {
$folder =~ $_
} @ExcludedFolders
} @Folders;
use Data::Dumper;
print Dumper \@Folders;
Вывод:
$VAR1 = [
'/this/is/folder/path/two/exclude/some/file.dat',
'/this/is/folder/path/three/exclud/some/file.dat',
'/this/is/folder/path/four/excludee/some/file.dat',
'/this/is/folder/path/six/exclude/some/file.dat'
];