仅解析单个开关,提高忽略其余部分或引发错误消息

时间:2013-05-25 17:02:16

标签: perl

我是一个Perl新手。我正在写一个只读一个参数的脚本。如果放入除指定参数之外的其他任何内容,它将调用一个使用函数。

当我使用getopt()时,脚本会输出任何内容。如果我使用getopts(),它会处理我的所有参数。我做错了什么?

use strict; 
use warnings;
use Getopt::Std;

sub main
{
    my %opts;   

    getopt('abcd', \%opts) or usage();

    if($opts{c}) {
        print "Got -c flag\n";
    }

    if($opts{a}) {
        print "Got -a flag\n";
    }

    if($opts{b}) {
        print "Got -b flag\n";
    }   
}

sub usage
{
    printf("There is an error in your options, try %s", $0);
}

main();

1 个答案:

答案 0 :(得分:3)

你没有做错任何事。您需要使用getopts(),这样您才能获得所有指定的选项,如果存在多个选项,则会抛出错误:

getopts('abcd', \%opts) or usage();
usage() if scalar keys %opts != 1;