|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 08 Aug 2002 16:31:50 To : Slava Kostin Subject : Re: Рекурсивный обход каталогов -------------------------------------------------------------------------------- Здравствуй, Slava Kostin. SK> Hello All! SK> Помогите, пожалуйста, разобраться, почему не работает у меня функция SK> рекурсивного обхода каталогов. SK> Упрощенно вот она: SK> sub scan_dir SK> { SK> local($_); SK> my($dir) = $_[0].'/*'; SK> while(<${dir}>) SK> { SK> if((-d) && (!(/.*\.$/))) SK> { SK> print("Hашли каталог $_"); SK> scan_dir($_); SK> } SK> } SK> } SK> Вызываю функцию так: scan_dir('d:/mytopleveldir'); SK> Функция не останавливается. Добирается до каталога нижнего уровня и все. SK> Выдает поочередно два каталога нижнего уровня в вечном цикле. SK> Что-то непонятное выдает while(<${dir}>). Hапример, $dir равна SK> 'd:/dir1/dir2/*', а итерация цикла сует в переменную $_ значение SK> 'd:/dir1/dir3. Hикак не пойму, отчего это. Есть ощущение, что <glob> нереентерабельна (файлхендл один и тот же используется?). Хотя может, я чего и пропустил... Попробуй заменить while на foreach, если не хочется пользоваться File::Find или на худой конец readdir с локальным хендлом. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/144545344f592.html, оценка из 5, голосов 16
|