如何强制用户输入整数?

时间:2015-08-17 23:13:37

标签: perl

我想检查用户的输入是否为整数。我尝试了以下方法,但它不起作用:

try {
    print "Enter int";
    $num=int(<>);
    print "okej";
}
catch (ValueError $e{
    print"not int";
}

2 个答案:

答案 0 :(得分:2)

你真的不想惩罚领先/尾随空间的用户(因为这些天似乎有太多的网站似乎在做),但也避免使用前导零。此外,确保在请求输入之前刷新输出:

#!/usr/bin/env perl

use strict;
use warnings;

my $input;

until (defined $input) {
    local $| = 1;
    print 'Enter an integer: ';
    ($input) = (<STDIN> =~ /\A \s* (-? [1-9] [0-9]* ) \s* \z/x);
}

print "$input\n";

int函数不检查某事是否为整数。相反,它将其参数转换为整数。因此,int(1)1int(1.11)也为1int('a')0 - 如果您启用了警告,则会显示警告。

另见:

答案 1 :(得分:1)

检查输入是否只有数字而没有别的......

use warnings;
use strict;

print "Enter integer: ";

my $input = <>;
chomp $input;

print "is int\n" if $input =~ /^[0-9]+$/;