跳过。和...... DirHandle的目录

时间:2015-04-15 12:00:18

标签: perl perlscript

如何跳过。和DirHandle中的目录?

use DirHandle;
if (defined $d) {
    while (defined($_ = $d->read)) { print "$_ \n" ; }
 undef $d;
}

1 个答案:

答案 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}以外的其他内容}

.