2

我是 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();
4

1 回答 1

3

你没有做错什么。您需要使用getopts(),以便获得所有指定的选项,如果存在多个选项,则抛出错误:

getopts('abcd', \%opts) or usage();
usage() if scalar keys %opts != 1;
于 2013-05-25T17:22:47.850 回答