PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 508


> Смотри также---------------------------------------------------------------------------------------------

Документация по стандартным модулям Term::ReadLine и Term::ReadLine::Gnu cCPAN.


538   Глава 15 • Пользовательские интерфейсы

15.12. Управление экраном

Проблема

Вы хотите выделять символы повышенной интенсивностью, перехватывать нажа­тия специальных клавиш или выводить полноэкранные меню, но не желаете беспокоиться о том, на каком устройстве вывода работает пользователь.

Решение

Воспользуйтесь модулем Curses с CPAN, который использует библиотеку curses(3) ва­шей системы.

Комментарий

Библиотека curses обеспечивает простое, эффективное и аппаратно-независимое выполнение полноэкранных операций. С его помощью можно писать высокоуров­невый код вывода данных на логическом экране по символам или по строкам. Что­бы результаты вывода появились на экране, вызовите функцию refresh. Вывод, сге­нерированный библиотекой, описывает только изменения виртуального экрана с момента последнего вызова refresh. Это особенно существенно для медленных подключений.

Работа с модулем Curses демонстрируется программой rep из примера 15.5. Вызовите ее с аргументами, описывающими командную строку запускаемой про­граммы:

% rep ps aux % rep netstat % rep -2 5 lpq

Сценарий rep в цикле вызывает команду и выводит ее данные на экран, обнов­ляя лишь ту часть, которая изменилась с момента предыдущего запуска. Такой ва­риант наиболее эффективен при малых изменениях между запусками. В правом нижнем углу экрана выводится текущая дата в инвертированном изображении.

По умолчанию rep ожидает 10 секунд перед повторным запуском команды. Чтобы изменить период задержки, передайте нужное количество секунд (допус­кается дробное число) в качестве аргумента, как это было сделано выше при вы­зове lpq. Кроме того, нажатие любой клавиши во время ожидания приводит к не­медленному выполнению команды.

Пример 15.5. rep

#!/usr/bm/perl -w

# rep - циклическое выполнение команды




Содержание  Назад  Вперед