-2

文件.pl

if (! getopts('abisf:',\%Options)){
# Display usage details
print "Usage Error invalid options \n";
exit(1);
}

如果我运行:

$>perl file.pl -q @argv;

这应该打印使用错误,但事实并非如此。

$>perl file.pl -a @argv;

这应该有$Options{a}=1,但我看到的是$Options{a}=''空的。

这是怎么回事?

4

1 回答 1

1

请记住尽可能发布简短、独立、正确(编译)的示例;它使人们更容易可靠地帮助您。

这是一个SSCCE:

#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Std;

my %Options;

if (! getopts('abisf:',\%Options)){
# Display usage details
print "Usage Error invalid options \n";
exit(1);
}

for my $opt (sort keys %Options)
{
    print "-$opt = $Options{$opt}\n";
}
for my $arg (@ARGV)
{
    print "arg = $arg\n";
}
print "OK\n";

当调用脚本opt.pl并如下所示调用它时,它似乎可以正常工作:

$ perl opt.pl
OK
$ perl opt.pl -a
-a = 1
OK
$ perl opt.pl -a x
-a = 1
arg = x
OK
$ perl opt.pl -a -f x
-a = 1
-f = x
OK
$ perl opt.pl -a -f x zzz
-a = 1
-f = x
arg = zzz
OK
$ perl opt.pl -q
Unknown option: q
Usage Error invalid options 
$ 

您在输出中看到任何意外情况吗?你在你的系统上得到了什么?

于 2012-09-15T06:01:29.360 回答