Автор Тема: Можно ли в "while" при переборе прыгать на нужную позицию в файле.  (Прочитано 2703 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Timur S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Можно ли в "while" при переборе прыгать на нужную позицию в файле. Как в for:

for(@file[3 .. 8]){
  ....
}

как в while:

while(?...)

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
1) В for у тебя используется массив. Почему нельзя его же использовать в while?

2) Можно обработать нужные строки с помощью оператора .. :
(взято из perldoc perlop):

if (3..8)
{
    #do something
}
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Timur S.

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 28
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Мне нужно прыгать на нужную строку в файле, а не переберая искать то что мне нужно, так как файл может быть очень большой, а если использовать массив то он тоже может быть очень большим и занемает память, по этому я и нехочу его использовать.

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
"Прыгать" в файле можно через seek( ), но там нет позиционирования по строкам.

В Perl Cookbook предлагаются несколько вариантов:
1) линейное чтение (читаешь файл, пока не встретишь нужную строку)
2) построение индекса типа [номер строки]->[индекс в файле] - подходит для редко изменяемых файлов
3) использование DB_File.

Самый легкий способ - первый :) Удобный - последний.
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28