如何跳过。和.. DirHandle 中的目录?
use DirHandle;
if (defined $d) {
while (defined($_ = $d->read)) { print "$_ \n" ; }
undef $d;
}
如何跳过。和.. DirHandle 中的目录?
use DirHandle;
if (defined $d) {
while (defined($_ = $d->read)) { print "$_ \n" ; }
undef $d;
}
顺便说一句,不要使用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 目录节点可以具有诸如等之类的名称...
,....
您只需确保该节点包含点以外的其他内容.
while ( defined(my $node = $d->read) ) {
next unless $node =~ /[^.]/;
print "$dir\n";
}