| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > "Отмотать" позицию при построчном чтении файла |
| Автор: alt2 4.12.2012, 16:54 |
| Есть ли возможность "отмотать" назад позицию при построчном чтении файла, на некоторое количество строк (не байт)? Искал-искал. Не нашел. |
| Автор: arto 4.12.2012, 17:02 |
| запомнить и отмотать |
| Автор: alt2 4.12.2012, 17:11 | ||
Чем отмотать? Перечитать с начала? |
| Автор: arto 4.12.2012, 17:33 |
| perldoc -f seek |
| Автор: alt2 4.12.2012, 17:37 | ||
Seek побайтный. Предложение помнить ответ tell для всех пройденных строк (сейчас их 10 млн.) заманчивое, но у меня и другие костыльные решения придумались - менее затратные. Хотелось бы напрямую - перемоткой строк. Если возможно. |
| Автор: arto 4.12.2012, 17:43 |
| невозможно. |
| Автор: alt2 4.12.2012, 17:44 | ||
Ясно. Спасибо. |
| Автор: noize 5.12.2012, 13:11 |
| прочитать весь файл в массив: my @array = <FILE>; после чего можно работать с нужной строкой строкой. |
| Автор: DurRandir 5.12.2012, 23:46 |
| Ну если вы уже читаете и как-то разбили на строки - то у вас есть их длина. Храните длину последних N прочитанных строк, надо вернуться назад - вычитаете из текущей позиции n слагаемых, удаляете их из этого списка. |
| Автор: slavenk 9.12.2012, 14:27 | ||
Можете использовать модуль https://metacpan.org/module/Tie::File. В данном случае строки файла представляются в виде массива, единственное предостережение - изменение значения массива изменяет строку файла, если не был указан модификатор "только чтение" в конструкторе
|
| Автор: alt2 9.12.2012, 14:45 | ||||
А вот это интересный ход. Спасибо. |