LINUX.ORG.RU

perl opendir -> опция -d не работает


0

0

Считываю директорию, служебные директории "." ".." не показывает, а обычные показывает, хотя по логике не должна? В чем может быть проблема?

opendir(DIR_D,";dir") || die "$! $dir \n"; while (defined ($filename = readdir DIR_DEV)) { next if -d $filename; push(@files, $filename); } closedir(DIR_D);

anonymous

Надо:

my $dir = "/some/dir";

opendir(DIRD, $dir) || die "$! $dir \n"; 
while (defined ($filename = readdir DIRD)) 
{ 
    next if -d "$dir/$filename"; 
    #           ^^^^^ (или делай chdir в каталог, который читаешь) 
    push(@files, $filename); 
} 
closedir(DIRD);

-----

Имхо так - наглядней.

opendir(DIR_D, $dir) || die "$! $dir \n"; 
@files = grep { -f "$dir/$_ } readdir(DIRD);
closedir(DIR_D);

anonymous
()

s{"$dir/$_}{"$dir/$_"}

anonymous
()

Спасибо за помощь, но при использовании строки "next if -d $filename" все равно не работает. А если использовать: $files = grep { -f "$dir /$_" } readdir(DIR); то все нормально.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.