我需要你的帮助.
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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果在命令行中我给$ input_mm 07的值 - perl将其视为7.如何修复它?
=i将读取值作为数字.如果要保留格式,请使用=s.
你读的值之后,如果你想确保它的数字,你可以使用Scalar::Util的looks_like_number子程序:
use Scalar::Util qw/looks_like_number/;
# ...
$result = GetOptions (
"fromFile=s" => \$inputFile, # string
"toFile=s" => \$outputFile,
"mm=s" => \$input_mm)
or die("Error in command line arguments\n");
die "mm wasn't a number!"
unless defined $input_mm && looks_like_number($input_mm);
Run Code Online (Sandbox Code Playgroud)
另外,不要忘记检查GetOptions的返回码(根据Getopt ::: Long docs); false值表示读取参数时出错.