如何使脚本非常具有交互性?Perl重新提示用户输入,直到获得准确的预期输入
剧本目的:
获取用户输入的编号并通过get_mod_val
函数查找mod;如果它返回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__
假设用户在执行脚本时传递参数。在我的审判中会发生什么,只是提示闪烁。程序不能继续执行。 –