Я очень новичок как в Perl, так и в ожидании, и пытаюсь понять, как отправить команду, когда появляется только приглашение. Я знаю, как отправить команду после того, как в терминале отобразится определенный вывод, но не могу найти правильный способ отправки команды, когда предыдущая команда не имеет определенного сообщения об успешном завершении, поэтому единственное, что находится в строке после команда является подсказкой. Код, который я пытался использовать, был:
$exp->expect($timeout,
[$user."@".$host, sub{my $self = shift;
$self -> send(the command I want to send);
exp_continue;}],
$GW);
$user."@",$host представляет приглашение в терминале, но, как вы могли догадаться, команда постоянно отправляется, так как после отправки команды приглашение появляется снова, поэтому команда отправляется снова, поэтому программа застревает в бесконечном цикле. Я пытался изменить exp_continue на exit, но это означало, что вся подпрограмма по какой-то причине перестала работать. Я также попытался изменить exp_continue на exp_continue_timeout и добавить операторы сна в подпрограмму, но это не остановило бесконечный цикл.
Я также пытался использовать только
sleep(5);
$exp->send(command);
но это просто отправляет команду в случайное время и не ждет завершения предыдущей команды. Является ли этот метод единственно возможным или существует метод, который ожидает появления подсказки, но отправляет команду только один раз?