|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Sergey Smagin 2:5054/60 04 Aug 2003 00:37:48 To : Alexey Mahotkin Subject : полный скан всех поддиректорий данной директории.... -------------------------------------------------------------------------------- 03 Авг 03 20:14, Alexey Mahotkin wrote to "Alexander V. Gaiduk": AM> From: Alexey Mahotkin <alexm@hsys.msk.ru> >>>>>> "AVG" == Alexander V Gaiduk <gav@arhcity.ru> writes: AC>> perldoc File::Find AVG>> хватит извращаться :) AM> Правильный вариант указан выше. AVG>> &scandir($startdir); AVG>> sub scandir { my $d; my $nd; opendir(DIR, $_[0]); foreach $d AVG>> (sort { $a cmp $b } readdir(DIR)) { if (($d ne ".") && ($d ne AVG>> "..")) { $nd = $_[0] . "/" . "$d"; if ( -d $nd ) { # print AVG>> "$nd\n"; # print directory names &scandir($nd); } else { print AVG>> "$nd\n"; # print file names AVG>> } AVG>> } AVG>> } AVG>> closedir(DIR); AVG>> } AM> В твоём варианте а) не проверяются коды вызова AM> opendir/readdir/closedir; б) зачем-то сортируются имена файлов; Раз пошла такая пьянка, то есть более садомазохистский вариант :) my @d=() my @cdir=(); $qqq = "e:/soft"; push @d, $qqq; scan ($qqq); sub scan ($) { my $ddd = @_[0]."/"; push @cdir, @_[0]; chdir ($ddd); my @dirs = <*>; foreach (@dirs) { if (-d $_) { push @d, join ("/",@cdir)."/".$_; &scan ($_); pop @cdir; chdir(".."); } } } Sergey aka /Dec/ --- MP3: silence * Origin: FidoNet: 1697 days, Win: 100h 46m (2:5054/60) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/18243f2d6517.html, оценка из 5, голосов 10
|