Я пишу простую программу, которая предназначена для фильтрации ввода из конвейера.Большая часть входных данных отправляется как нетронутая.Часть его модифицируется или используется для извлечения информации.В простейшем виде - ничего не делая - программа filter
выглядит следующим образом:
$|++;
while (<>) {
print;
}
Основная программа иногда выводит обновления выполнения своей задачи, перезаписывая то же визуальное содержимое, используя строки, заканчивающиеся символом возврата каретки.,Передача такого содержимого в filter
блокирует весь вывод:
$ perl -e '$|++; print ++$a, "\r" and sleep 1 while 1' | filter
Есть ли простой способ прочитать эти строки в том же цикле, или я должен пойти по пути sysread
?Я ищу что-то похожее на то, что произошло бы, если бы можно было установить разделитель записей на "\n
или \r
".