如何跳过。和DirHandle中的目录?
use DirHandle;
if (defined $d) {
while (defined($_ = $d->read)) { print "$_ \n" ; }
undef $d;
}
答案 0 :(得分:5)
顺便说一下,不要使用undef $d
- $d = undef
更可取。
有几种方法 - 如果您了解Perl或正则表达式
,所有方法都很简单显而易见的
while ( defined(my $node = $d->read) ) {
next if $node eq '.' or $node eq '..';
print "$dir\n";
}
使用正则表达式
while ( defined(my $node = $d->read) ) {
next if $node =~ /\A\.\.?\z/;
print "$dir\n";
}
或更整洁但安全性更低,因为Linux目录节点可以包含...
和....
等名称,您可以确保该节点包含点{{1}以外的其他内容}
.