在Perl中,如何在用户输入无效输入时要求用户重新输入输入?
发布时间:2020-12-16 06:12:12 所属栏目:大数据 来源:网络整理
导读:我有一个Perl子程序,它要求用户输入.无论输入的输入是否为有效输入,我都会在子程序内部执行检查. 如果不是,我想再次调用子程序让用户输入有效输入. 我的子程序如下: sub some_routine { print "Enter a number to select (1) Apple (2) Mango (3) grapes:"
我有一个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; } } } 那么如何递归子程序呢? 解决方法
要在Perl中递归调用子例程,只需从自身调用sub,就像在任何其他语言中一样:
sub factorial { my $num = shift; return 1 if $num < 2; return $num * factorial($num - 1); } 但是,您实际上并不想使用递归来“重复直到条件更改”方案. my $valid; while (!$valid) { print "Enter something: "; my $data = <STDIN>; $valid = validate($data); print "Bzzt! Invalid - try again!n" unless $valid; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |