在Perl中,如何在用户输入无效输入时要求用户重新输入输入?

前端之家收集整理的这篇文章主要介绍了在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;
        }
    }
}

那么如何递归子程序呢?

解决方法

要在Perl中递归调用子例程,只需从自身调用sub,就像在任何其他语言中一样:

sub factorial {
  my $num = shift;
  return 1 if $num < 2;
  return $num * factorial($num - 1);
}

但是,您实际上并不想使用递归来“重复直到条件更改”方案.
那就是while循环用于:

my $valid;
while (!$valid) {
  print "Enter something: ";
  my $data = <STDIN>;
  $valid = validate($data);
  print "Bzzt!  Invalid - try again!\n" unless $valid;
}

猜你在找的Perl相关文章