![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
d0k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.5.2005 Репутация: нет Всего: нет |
Тема такова:
Открываем файл , считываем строки <filehandle>. Необходимо изменять положение текущей считываемой строки ( также положение текущей записи в файл). Переменная $. изменяется по порядку как и должна показывает номер строки. $/ не трогаю (по умолчанию). Но если я меняю $. , надеясь перейти на определенную строку, то просто $. изменяется, а указатель остаётся на том же месте и аккумулируется уже от мною заданного значения. Почему? И всё-таки как изменить указатель строки? Для понимания более точный вопрос : Как перейти на последнию строку или как считать строку с заданным номером? ![]() seek и tell - работают с байтами - это понятно, а нет ли чего похожего но для работы со строками? ![]() |
|||
|
||||
BlackLFL |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
perldoc read
|
||||
|
|||||
nitr |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
если файлик маленький:
можно через массив @content = <HANDLE>; искомая строка $str = $content[NUMBER-1]; , начиная с 1 ![]() Вот хорошее решение для любого размера и большая скорость - читать тут Он занимаеться тем же ![]() ![]()
и последняя строка: print "$content[-1]\n"; Для чего тебе это всё? Покажи кусок кода ![]() Вот по твоему вопросу:
результат $file = "ex.pl"; для последней:
результат print; Это сообщение отредактировал(а) nitr - 19.3.2006, 19:50 |
||||||
|
|||||||
BlackLFL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 15.9.2005 Где: Москва Репутация: 8 Всего: 12 |
поддерживаю |
|||
|
||||
d0k |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.5.2005 Репутация: нет Всего: нет |
Мне это нужно, чтобы просто к любому символу в любой строке текстового файла можно было обратиться.
Ещё поясню, прочитал (в perldoc),что изменяя переменную $. (в которой хранится номер текущей строки) можно обращаться к любой строке:
Массив подходит - но не целесообразно после изменений в одной строке сохранять весь массив, особенно если он на 100000 строк. Массив можно, но как тогда заменить в файле именно определённую строку,а не переписывать весь массив в файл заного. nitr написал:
Это верно - когда мы просто перебором доходим до последней строки, а дальше как вернуться вверх? Или начать перебор заного? А если в файле 100000 строк. А как после того как мы прочитали последнию строку прочитать предпоследнию а затем 4-ую затем 8-ую 2-ую и т.д. в любой последовательности? |
||||
|
|||||
nitr |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
читать тут ВНИМАТЕЛЬНО и для чего это ![]() ![]()
Это сообщение отредактировал(а) nitr - 19.3.2006, 21:06 |
||||||
|
|||||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
один из самых простых подсчётов строк
|
|||
|
||||
d0k |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 27.5.2005 Репутация: нет Всего: нет |
![]() DB_File очень удобная библиотека в прямом смысле привязал хеш к файлу и никаких проблем. Berkeley DB рулят, но уж слишком заумно сделано. ладно разберусь |
|||
|
||||
Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: нет Всего: 40 |
Очень интересно. А как вы собираетесь изменить только одну строку в тестовом файле?. Вы полагаете текстовые редакторы не переписывают файлы если вы изменили только одну строку? -------------------- Бонифаций. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |