Perl Getopt ::长模块数值

时间:2013-10-03 22:54:09

标签: perl

我需要你的帮助。

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.如何解决?

3 个答案:

答案 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)