Если программа завершается сама, предоставить
# Произошла ошибка; вероятно, работа программы нарушена
# Послать программе "Hello, world" и перевод строки
print $command "Hello, world\n";
# Если программа завершается сама, предоставить ей такую возможность
$command->soft_close();
# Если программа должна быть закрыта извне, завершить ее
$command->hard_close();
Комментарий
Для работы модуля Expect необходимы два других модуля с CPAN: IO::Pty и IO:Stty. Expect создает псевдотерминал для взаимодействия с программами, которые непременно должны общаться с драйвером терминального устройства. Такая возможность часто используется для изменения пароля в программе passwd. К числу других программ, для которых также необходим настоящий терминал, принадлежат telnet (модуль Net::Telnet из рецепта 18.6 более функционален и обладает улучшенной переносимостью) и ftp.
Запустите нужную программу с помощью Expect->spawn, передайте ей имя программы и аргументы — либо в виде одной строки, либо в виде списка. Expect запускает программу и возвращает либо представляющий ее объект, либо undef, если запустить программу не удалось.
Для ожидания вывода программой конкретной строки применяется метод expect. Его первый аргумент равен либо числу секунд, в течение которых ожидается вывод строки, либо undef для бесконечного ожидания. Ожидаемая строка является вторым аргументом expect. Чтобы определить ее с помощью регулярного выражения, передайте в качестве второго аргумента строку "-re", а третьего — строку с шаблоном. Затем можно передать другие строки или шаблоны:
$which = $command->expect(30, "invalid", "succes", "error", "boom"); if ($which) {
# Найдена одна из указанных строк }
В скалярном контексте expect возвращает номер аргумента, для которого произошло совпадение. В предыдущем примере expect вернет 1 при выдаче программой строки "invalid", 2 - при выводе "succes" и т. д. Если ни одна строка или шаблон не совпали, expect возвращает false.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий