Я предполагаю, что вы используете модуль 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;