Forum Webscript.Ru
Программирование => Perl => Тема начата: Timur S. от 27 Января 2003, 11:01:14
-
Можно ли в "while" при переборе прыгать на нужную позицию в файле. Как в for:
for(@file[3 .. 8]){
....
}
как в while:
while(?...)
-
1) В for у тебя используется массив. Почему нельзя его же использовать в while?
2) Можно обработать нужные строки с помощью оператора .. :
(взято из perldoc perlop):
if (3..8)
{
#do something
}
-
Мне нужно прыгать на нужную строку в файле, а не переберая искать то что мне нужно, так как файл может быть очень большой, а если использовать массив то он тоже может быть очень большим и занемает память, по этому я и нехочу его использовать.
-
"Прыгать" в файле можно через seek( ), но там нет позиционирования по строкам.
В Perl Cookbook предлагаются несколько вариантов:
1) линейное чтение (читаешь файл, пока не встретишь нужную строку)
2) построение индекса типа [номер строки]->[индекс в файле] - подходит для редко изменяемых файлов
3) использование DB_File.
Самый легкий способ - первый :) Удобный - последний.