PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 512
542 Глава 15 • Пользовательские интерфейсы
В списковом контексте expect возвращает список из пяти элементов. Первый элемент определяет номер совпавшей строки или шаблона (идентично возвращаемому значению в скалярном контексте). Второй элемент — строка с описанием причины возврата из expect. При отсутствии ошибок второй аргумент равен undef. Возможные варианты ошибок: "1: TIMEOUT", "2: EOF', "3: spawn id(...) died" и "4: . " (смысл этих сообщений описан в Expect(3)). Третий элемент в возвращаемом списке expect равен совпавшей строке. Четвертый элемент — текст до совпадения, а пятый — текст после совпадения.
Передача данных программе, находящейся под управлением Expect, сводится к простейшему вызову print. Единственная трудность состоит в том, что терминалы, устройства и сокеты отличаются по тем последовательностям, которые они передают и принимают в качестве разделителя строк, — мы покинули убежище стандартной библиотеки ввода/вывода С, поэтому автоматическое преобразование в "\гГ не происходит. Рекомендуем начать с ' \г"; если не получится, попробуйте '\п и "\г\п".
После завершения работы с запущенной программой у вас есть три возможности. Во-первых, можно продолжить работу с главной программой; вероятно, запущенная программа будет принудительно завершена по завершении главной программы. Однако в этом случае плодятся лишние процессы. Во-вторых, если запущенная программа должна нормально завершиться после вывода всех данных или по некоторому внешнему условию (как, например, telnet при выходе из удаленного командного интерпретатора), вызовите метод soft_close. Если запущенная программа будет работать бесконечно (например, tail -/), вызовите метод hard_close; он уничтожает запущенный процесс.
> Смотри также-------------------------------------------------------------------------
Документация по модулям Expect, IO:Pty и IO:Stty от CPAN.
15.14. Создание меню с помощью Тк