Perl正则表达式:如何忽略'..'和'Rollback'子目录

时间:2017-03-29 06:25:28

标签: regex perl

我想忽略'..'和'Rollback'子目录但是下面的代码不起作用。请建议。

if(-d $input) {
    opendir (my $dh, $input) or die "Cannot opendir $input: $!";
    while (my $dir = readdir($dh)) {
        my $path_dir = File::Spec->catfile($input, $dir);
        next unless (-d $path_dir && $dir =~ m/^(?![\.{2}|Rollback])/);
        print "dir=$dir\n";
    }
}

输出只显示一个子目录,但所需的输出应该是子目录加'。'

1 个答案:

答案 0 :(得分:0)

您最有可能想要使用"非捕获标识符" ? 请尝试以下代码。

if(-d $input) {
    opendir (my $dh, $input) or die "Cannot opendir $input: $!";
    while (my $dir = readdir($dh)) {
        my $path_dir = File::Spec->catfile($input, $dir);
        next unless (-d $path_dir && $dir =~ m/^(?:([\.]{2}|Rollback))/);
        print "dir=$dir\n";
    }
}