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



              

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


Template Entry Demonstration

Address Data Example                  Record #     

Name: [______________________________________ ]

Add r: [______________________________________ ]

City: [__________ ]      State: [__]    Zip: [\\\\\]

Phone: (\\\) \\\-\\\\           Password: [. ]

Enter all information available.

Edit fields with left/right arrow heys or "delete".

Switch fields with "Tab" or up/down arrow keys.

Indicate completion by pressing "Return".

Refresh screen with "Control-L".

Abort this demo here with "Control-X".

Пользователь вводит текст в соответствующих полях. Обычный текст обозна­чается символами подчеркивания, числовые данные — символами \, а неотобра-жаемые данные — символами ~. Такие обозначения напоминают форматы Perl, за исключением того, что формы предназначены для вывода, а не для ввода данных.

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

Man-страница curses(3) вашей системы (если есть); документация по модулям Curses и perlmenu с CPAN; раздел «Formats»perlform(l); рецепт 3.10.

15.13. Управление другой программой с помощью Expect

Проблема

Вы хотите автоматизировать процесс взаимодействия с полноэкранной програм­мой, которая работает с терминалом, не ограничиваясь STDIN и STDOUT.

Решение

Воспользуйтесь модулем Expect с CPAN:

use Expect;

Scommand = Expect->spawn("program to run") or die "Couldn't start program: $!\n";

#  Запретить вывод программы в STDOUT
$command->log_stdout(0);

#  10 секунд подождать появления "Password:"
unless ($command->expect(10, "Password")) {

# Тайм-аут


15.13. Управление другой программой с помощью Expect   541

# 20 секунд подождать вывода текста,   совпадающего с /[ll_]ogin:  ?/ unless ($command->expect(20,   -re =>   '[lL]ogin:   ?'))   { # Таймаут

# Бесконечно долго ждать появления "invalid" unless  ($command->expect(undef,   "invalid"))   <




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