Getopt :: Long将几个参数传递给子例程

时间:2014-09-16 20:12:59

标签: perl getopt-long

你能告诉我,如何将几个参数从命令行传递给Getopt::Long中的函数?我的问题如下 - 我用以下方式定义选项:

...

my $result = GetOptions('ham=s{2}' => \&hamming_distance); 

...

sub hamming_distance {
my @values = @_;
...
}

如果我用选项

调用该程序
--ham good wood

我有两次调用子程序hamming distance,一次是“good”,一次是“wood”,即@_的值是ham,good,然后是{{1} }。如何只使用两个参数进行一次调用 - ham,wood

2 个答案:

答案 0 :(得分:2)

my @ham;
my $result = GetOptions('ham=s{2}' => \@ham)
   or usage();

hamming_distance(@ham) if @ham;

答案 1 :(得分:1)

如果您不需要处理程序子例程,则可以简单地创建一个数组:

use warnings;
use strict;
use Getopt::Long;
use Data::Dumper;

my @values;
my $result = GetOptions('ham=s{2}' => \@values); 
print Dumper(\@values);

__END__

$VAR1 = [
          'good',
          'wood'
        ];

请注意,根据文档,这种数组方法是实验性的。