Как сделать сценарий очень интерактивным?
Цель сценария:
Получить введенный пользователем номер и найти мод с помощью функции get_mod_val
;если он возвращает 1, скажите «хорошо» и выйдите из скрипта;если он возвращает 0, попросите пользователя ввести нечетное число.
Проверка:
- допускаются только цифры, без символов, десятичные, специальные символы.
- незавершайте сценарий, пока пользователь не введет нечетное число.
Следующий код работает нормально;это следует выше правилам пункта 1 проверки, но это не очень интерактивно согласно нашему требованию закона.Когда вышеприведенные правила не выполняются, сценарий завершается, и нам нужно снова выполнить сценарий.
Как сделать следующий код очень интерактивным?
$ip_no = $ARGV[0];
if ($ip_no!="") {
$get_mod_op = get_mod_val($ip_no);
if ($ip_no =~ /\D/){
print "Entered number only.....";
exit;
}else{
if ($get_mod_op==1) {
print "Good odd number(${get_mod_op}): ${ip_no} ";
exit;
}else{
print "Good even number(${get_mod_op}): ${ip_no} ";
exit;
}
}
}else{
print "Enter number.";
exit;
}
Спасибо всем, наконец-то я выполнилКод с вашими предложениями, следуя сниппету, достиг моего требования, просмотрите код и посоветуйте для оптимизации.
if ($ARGV[0] != "") {
$user_ip = $ARGV[0];
}elsif (($ARGV[0] =~ /\D/ ) || ($ARGV[0] eq "") ){
print "Enter odd number only: ";
$user_ip = <STDIN>;
}else{
$user_ip = <STDIN>;
}
do{ #get mod value, if mod_off is 1 then entered number is odd otherwise ask user to enter the odd number
$mod_off = find_mod_val($user_ip);
if (($user_ip == "") || ($user_ip eq "") || ($user_ip eq "") || ($mod_off == 0)) {
print "Enter odd number only: ";
$user_ip = <STDIN>;
}
}until($mod_off == 1);
print "Good odd number ${user_ip}";
sub find_mod_val($user_ip){
return $user_ip%2;
}
__END__