加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在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);
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读