У меня есть подпрограмма Perl, которая запрашивает ввод от пользователя. Я выполняю проверку внутри самой подпрограммы, является ли введенный ввод допустимым.Как я могу попросить пользователя повторно ввести ввод, когда они вводят неверный ввод, в Perl?
Если это не так, я хочу снова вызвать подпрограмму, чтобы на этот раз пользователь мог ввести действительный ввод.
Моя подпрограмма выглядит следующим образом:
sub some_routine {
print "Enter a number to select (1) Apple (2) Mango (3) grapes:"
$value=STDIN;
if($value =~ /[^1-3]/) {
print "The input is not valid!";
print "Do you want to continue selecting a fruit again (Y or N)?";
$choice = STDIN;
if($choice eq "y") {
### I want to call the subroutine again to enter input ###
} else {
exit;
}
}
}
Так как рекурсивная подпрограмму в этом?
Почему регресс? Может быть, цикл while? –
Когда я использую some_routine(); для повторного приема ничего не происходит (он не возвращается, попросив пользователя ввести снова для выбора) ... Что мне делать? –
Привет, ВСЕ ... Спасибо за ваши ответы .... Выше моего комментария было из-за одной вещи следующим образом :::::: ==> Когда я даю значение «y» ... $ выбор становится «y \ n», и он не попадает в sttmnt, поскольку он имеет прикрепленный к нему символ новой строки ... Чтобы повторно выполнить подпрограмму в этом случае :: some_routine(); sttmnt достаточно :) –