退出使用IO :: Prompter要求输入数字的while循环

时间:2019-03-03 19:02:37

标签: perl prompt

在使用IO :: Prompter时,我只要求数字作为输入。这可行。但是,如果我输入“退出”之类的东西,我似乎找不到一种优雅的方式来摆脱子程序。

在文档中它表示类似:

while (my $cmd = prompt '>', -fail=>'quit') {
    ...
}

但是我无法实现该功能,并尝试了以下无法正常运行的功能(我无法退出)。

#!/usr/bin/perl
use strict;
use warnings;
use IO::Prompter;

my $ask = prompt "Do you want to show numbers?", -yn;
print "You entered: $ask\n";
if ( $ask eq 'y' ) {
    showNumbers();
}
else {
    print "You said: no\n";
}

sub showNumbers {
    while ( prompt -num, 'Enter a number'){
        print "$_\n";
    }
}

1 个答案:

答案 0 :(得分:2)

-DEF可用于提供不是有效响应的默认值,从而使我们能够区分有效响应和仅按Enter键。

sub showNumbers {
    while (1) {
        my $num = prompt 'Enter a number', -num, -DEF => "";

        # $num is a weird value that true even for an empty string, so
        # we must separately check for false (meaning EOF) and empty string.
        last if !$num || $num eq "";

        print "$num\n";
    }
}