我需要你的帮助。
use Getopt::Long;
my $inputFile = "";
my $outputFile = "";
my $input_mm = "";
my $result;
$result = GetOptions (
"fromFile=s" => \$inputFile, # string
"toFile=s" => \$outputFile,
"mm=i" => \$input_mm);
在这种情况下,如果在命令行中我给$ input_mm 07赋值 - perl将其视为7.如何解决?
答案 0 :(得分:5)
=i
会将该值读取为数字。如果要保留格式,请使用=s
。
读完该值后,如果要确保它是数字,可以使用Scalar::Util
的{{1}}子程序:
looks_like_number
另外,不要忘记检查GetOptions的返回代码(根据Getopt ::: Long docs);假值表示读取参数时出错。
答案 1 :(得分:1)
如果要保留输入值,请使用=s
。您可以稍后检查值的有效性,例如
use Scalar::Util qw(looks_like_number);
$result = GetOptions(...);
if (defined $input_mm) {
looks_like_number($input_mm) or die "Invalid mm value '$input_mm'";
}
答案 2 :(得分:-1)
在GetOptions方法中,它将参数= i作为数字,如果要将其作为数字,则应使用该函数 使用Scalar :: Util qw(looks_like_number)