我想检查用户的输入是否为整数。我尝试了以下方法,但它不起作用:
try {
print "Enter int";
$num=int(<>);
print "okej";
}
catch (ValueError $e{
print"not int";
}
答案 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)
为1
,int(1.11)
也为1
,int('a')
为0
- 如果您启用了警告,则会显示警告。
另见:
答案 1 :(得分:1)
检查输入是否只有数字而没有别的......
use warnings;
use strict;
print "Enter integer: ";
my $input = <>;
chomp $input;
print "is int\n" if $input =~ /^[0-9]+$/;