|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программирование в *nix » Perl File::tail |
|
Perl File::tail
|
Пользователь Сообщения: 69 |
Профиль | Отправить PM | Цитировать
Здравствуйте! У меня возникла следующая ситуация!
У меня есть пустой файл "file.txt", время от времени туда приходит некая информация. Мой скрипт "print.pl" подключается к этому файлу, читает его построчно, и выводит на экран содержимое. И вот тут возникает проблема, когда в файл "file.txt" приходит строка в которой не символа конца строки, то скрипт держит эту строку и не выплёвывает её. Опишу некоторый тест который я проводил. 1. Создаю пустой файл file.txt и создаю файл 1.txt (я их прикрепил к сообщению). 2. Запускаю скрипт print.pl 3. В другой консоле делаю "cat 1.txt >> file.txt" 4. В результате на экране у меня высвечивается строки 1 и 2 (без строки 3), а в файле file.txt все 3 строки. 5. Далее опять делаю "cat 1.txt >> file.txt" и врезультате у меня третья строка от первого раза вылетает и показывается на экране. Помогите плиз, может есть в функции fail::tail какие нибуть настройки. |
|
Отправлено: 09:24, 30-03-2011 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:36, 30-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 69
|
Профиль | Отправить PM | Цитировать Мне необходимо сделать в той структуре которую я указал.
|
Отправлено: 11:40, 30-03-2011 | #3 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать да, я не подумала про tail. Но там как раз ожидается строка, т.е. полностью, с символом завершения (да и в логах, для которого это используется, признак конца строки всегда есть). так что не уверена, что в таком виде это решаемо
|
Отправлено: 13:11, 30-03-2011 | #4 |
Ветеран Сообщения: 7265
|
Профиль | Отправить PM | Цитировать а просто "tail -f имя_файла" не подходит?
|
|
------- Отправлено: 13:54, 30-03-2011 | #5 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать кстати, да - обычный tail берет и последнюю строку из этого примера
|
Отправлено: 15:07, 30-03-2011 | #6 |
Пользователь Сообщения: 69
|
Профиль | Отправить PM | Цитировать Я описал только небольшой пример, отображающий суть проблемы. на самом деле мне необходимо чтобы этот скрипт работал постоянно и делал действия если пришла строка, а если строки нет необходимо делать другие действия.
Я рассматривал различные варианты решения своей задачи, и этот способ оказался для меня наиболее приемлимый. Может можно изменить сму функцию fail::tail? Там где держиться строка более 1 секунды принудительно вставлять \n и выталкивать строку. Только вот я никак не могу найти где это можно исправить. Почему-то не могу загрузить сам файл вот ссылка: http://cpansearch.perl.org/src/MGRAB...0.99.3/Tail.pm |
Отправлено: 15:22, 30-03-2011 | #7 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать Jonik-Mnimonik,
кстати, у Вас там третья строка появляется, когда приходит очередная партия. Можно раз в 1 с по крону добавлять в файл служебную строку (полноценную). Она будет "выталкивать" задержавшиеся строки, а саму ее легко будет игнорировать |
Отправлено: 15:07, 31-03-2011 | #8 |
Ветеран Сообщения: 581
|
Профиль | Отправить PM | Цитировать Цитата mar:
Проще задать максимальную строку, и если конец строки не встретился через N символов добавлять символ конца строки. |
|
Отправлено: 00:18, 16-07-2011 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - the file is possibly corrupt. the file header checksum does not match the computed ch | MSergN | Ноутбуки | 4 | 18-04-2011 09:38 | |
CMD/BAT - [решено] Аналог команды tail в Unix | DimaDivine | Скриптовые языки администрирования Windows | 5 | 23-07-2009 01:57 | |
FreeBSD 5.3 Perl не видит локали, а KDE при сборке не видит perl :o | mar | Общий по FreeBSD | 8 | 06-05-2005 13:13 | |
Perl | Patrick | Программирование и базы данных | 3 | 02-06-2004 23:27 |
|