Как skipp. и .. каталоги в DirHandle?Пропуск. и .. Каталоги в DirHandle
use DirHandle;
if (defined $d) {
while (defined($_ = $d->read)) { print "$_ \n" ; }
undef $d;
}
Как skipp. и .. каталоги в DirHandle?Пропуск. и .. Каталоги в 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 может иметь такие имена, как ...
и ....
и т. д., вы можете просто убедиться, что узел содержит что-то другое t [.] [.]? Хань точка .
while (defined(my $node = $d->read)) {
next unless $node =~ /[^.]/;
print "$dir\n";
}
'дальше, если/^ \ г /;' –
Что делать, если я хочу, чтобы пропустить файлы.? – Chetu