![]() |
Perl File::tail
Вложений: 3
Здравствуйте! У меня возникла следующая ситуация!
У меня есть пустой файл "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 какие нибуть настройки. |
а нельзя ли тоже самое, но гораздо проще?
PHP код:
|
Мне необходимо сделать в той структуре которую я указал.
|
да, я не подумала про tail. Но там как раз ожидается строка, т.е. полностью, с символом завершения (да и в логах, для которого это используется, признак конца строки всегда есть). так что не уверена, что в таком виде это решаемо
|
а просто "tail -f имя_файла" не подходит?
|
кстати, да - обычный tail берет и последнюю строку из этого примера
|
Я описал только небольшой пример, отображающий суть проблемы. на самом деле мне необходимо чтобы этот скрипт работал постоянно и делал действия если пришла строка, а если строки нет необходимо делать другие действия.
Я рассматривал различные варианты решения своей задачи, и этот способ оказался для меня наиболее приемлимый. Может можно изменить сму функцию fail::tail? Там где держиться строка более 1 секунды принудительно вставлять \n и выталкивать строку. Только вот я никак не могу найти где это можно исправить. Почему-то не могу загрузить сам файл вот ссылка: http://cpansearch.perl.org/src/MGRAB...0.99.3/Tail.pm |
Jonik-Mnimonik,
кстати, у Вас там третья строка появляется, когда приходит очередная партия. Можно раз в 1 с по крону добавлять в файл служебную строку (полноценную). Она будет "выталкивать" задержавшиеся строки, а саму ее легко будет игнорировать |
Цитата:
Проще задать максимальную строку, и если конец строки не встретился через N символов добавлять символ конца строки. |
Время: 17:45. |
Время: 17:45.
© OSzone.net 2001-