Автор Тема: <чтение файла>  (Прочитано 3823 раз)

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

Оффлайн Е. Перлов

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
<чтение файла>
« : 28 Января 2003, 18:47:14 »
Подскажите, пожалуйста, как читать файл построчно начиная с конца, т.е. чтобы сначала читалась последняя строчка, потом предпоследня...?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
<чтение файла>
« Ответ #1 : 28 Января 2003, 18:50:53 »
В массив потом perldoc -f reverse
The documentations is your friend

Оффлайн Е. Перлов

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
<чтение файла>
« Ответ #2 : 28 Января 2003, 21:24:15 »
Чтение в массив - это как раз то, чего я хотел бы избежать, т.к. длина файла ничем не ограничена. Thank you anyway.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
<чтение файла>
« Ответ #3 : 28 Января 2003, 21:27:17 »
Tak seek-om читай.
По кусочкам.
perldoc -f seek
The documentations is your friend

Оффлайн Е. Перлов

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
<чтение файла>
« Ответ #4 : 29 Января 2003, 13:39:20 »
Смысле по одному байту? Ты не мог бы показать хотя бы схематический алгоритм, как это сделать?

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
<чтение файла>
« Ответ #5 : 29 Января 2003, 14:05:13 »
Более подробно опиши задачу (формат файла, размер, что с ним надо делать).
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
<чтение файла>
« Ответ #6 : 29 Января 2003, 14:06:53 »
Схематический алгоритм укладывается в одной строке :)
Сколько поставишь-столько и будет.
Почитай еще perldoc -f sysread
Цитировать

       sysread FILEHANDLE,SCALAR,LENGTH
               Attempts to read LENGTH characters of data into variable SCALAR
               from the specified FILEHANDLE, using the system call read(2).
               It bypasses buffered IO, so mixing this with other kinds of
               reads, "print", "write", "seek", "tell", or "eof" can cause
               confusion because stdio usually buffers data.  Returns the num‐
               ber of characters actually read, 0 at end of file, or undef if
               there was an error.  SCALAR will be grown or shrunk so that the
               last byte actually read is the last byte of the scalar after
               the read.
The documentations is your friend

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
<чтение файла>
« Ответ #7 : 29 Января 2003, 15:00:47 »
Схематический алгоритм:
1) читаешь кусок файла с конца (допустим, последние 100Кб)
2) разбиваешь с помощью split /\\r?\\n/ на строки
3) первую строку не трогаешь (вдруг это окончание большей строки?), остальному массиву делаешь reverse (или просто читаешь с конца с помощью отрицательных индексов).
4) читаешь следующие 100 Кб с конца + в конец прикрепляешь первую строку
5) и т.д. с пункта 2.
Само собой, нужна грамотная проверка на окончание цикла :)

Кажется, так.
[ основной браузер когда-то был, теперь попробуй разберись =]

 

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