|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Ilya Rubtsov 2:5020/400 16 Jun 2000 22:04:14 To : All Subject : Re: Разница между while и for(foreach) -------------------------------------------------------------------------------- On Fri, 16 Jun 2000 12:48:49 +0400, Serg Kruchenuk <Serg.Kruchenuk@p47.f8.n4625.z2.fidonet.org> wrote: >Выполняется скpипт по Вин98 + perl v5.6.0 built 613 (activestate) А если на нормальной версии Перла попробовать? >while <MYFILE> { Что тут происходит? При каждом проходе в блоке условия проворачивается процедура вида $_ = <MYFILE>. В скалярном контексте файл-хэндлер выдает следующую строку файла(строку -- по дефолту. Кажись про $/ читать надо). В итоге файл последовательно "умно" читается по одной строке. Причем файл целиком в память не загружается. Как оно реализовано -- дело разработчиков Перла, но ИМХО это единственное спасение при чтении больших файлов. >foreach <MYFILE> { А вот тут уже происходит совсем иное. Здесь оператору foreach требуется массив. А в списковом контексте файл-хэндлер выдает _все_ оставшиеся до конца файла строки. Все твои 35 метров. Удивлен? >/Вопpос: Кто виноват и почему так пpоисходит?/ Руки виноваты. И недостаточное время, уделяемое чтению доков. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/2080924f8d77.html, оценка из 5, голосов 10
|