0

如何将多个参数从命令行传递给函数Getopt::Long?我的问题如下。我通过以下方式定义选项:

...

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

...

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

如果我用选项调用程序

--ham good wood

我有两次调用子程序hamming distance,一次是“good”,一次是“wood”,即@_isham,good和 then的值ham,wood。我怎样才能只得到一个带有两个参数的调用 - ham,good,wood

4

2 回答 2

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

hamming_distance(@ham) if @ham;
于 2014-09-16T20:27:02.357 回答
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'
        ];

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

于 2014-09-16T20:26:12.513 回答