Оценка Ожидания в Perl - PullRequest
       3

Оценка Ожидания в Perl

4 голосов
/ 16 июля 2010

Я использую Expect в Perl для подключения к удаленному компьютеру и выполнения определенных функций.Пример кода похож на

$outfile="ls -lrt";
$outfile1="output";

$exp->expect(30,-re,".*bash-.*" => sub{$exp->send("$outfile2 >$outfile \r")});
$exp->expect(60,-re,".*bash-.*" => sub{$exp->send("$shayam > $Ram \r")});

Даже если первое выражение не выполнено, оно будет ждать 60 секунд и выполнит второе выражение.Я просто хочу проверить, что, если проходит только первое утверждение, оно должно продолжаться.

1 Ответ

4 голосов
/ 16 июля 2010

Я предполагаю, что вы используете модуль Expect.pm, описанный здесь .Как там указано:

Если вызывается в контексте массива, функция return () вернется ($ matched_pattern_position, $ error, $ success_matching_string, $ before_match и $ after_match).

Таким образом, вы, вероятно, захотите вызвать его в контексте массива, чтобы вы могли получить ошибку, как в случае сбоя регулярного выражения, так и в случае неудачной отправки.

my ($matched_pattern_position, $error,
  $successfully_matching_string,
  $before_match, $after_match) =
  $exp->expect(30
  , -re,".*bash-.*" =>
    sub{$exp->send("$outfile2 >$outfile \r")}
);

$exp->expect(60
  ,-re,".*bash-.*" =>
    sub{$exp->send("$shayam > $Ram \r")}
) if !defined $error;
...