如何skipp.和DirHandle中的目录?
use DirHandle;
if (defined $d) {
while (defined($_ = $d->read)) { print "$_ \n" ; }
undef $d;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,不要使用undef $d- $d = undef是优选的.
有几种方法 - 如果你知道Perl或正则表达式,它们都很简单
显而易见的
while ( defined(my $node = $d->read) ) {
next if $node eq '.' or $node eq '..';
print "$dir\n";
}
Run Code Online (Sandbox Code Playgroud)
使用正则表达式
while ( defined(my $node = $d->read) ) {
next if $node =~ /\A\.\.?\z/;
print "$dir\n";
}
Run Code Online (Sandbox Code Playgroud)
或者更整齐但不太安全,因为Linux目录节点可以有这样的名称...和....等,你可以确保该节点包含其他的东西比一个点.
while ( defined(my $node = $d->read) ) {
next unless $node =~ /[^.]/;
print "$dir\n";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |