2

我可以使用 Getopt::Long 来设置结构字段吗?

use strict;
use diagnostics;
use Getopt::Long;
use Class::Struct foo [ a => '$', b => '$' ];

my $foo = foo->new();
GetOptions("a=i" => \$foo->a, "b=i" => \$foo->b);

似乎不起作用,“-a 10”似乎没有设置$foo->a

显然,我宁愿避免

GetOptions("a=i" => sub { $foo->a($_[1]); }, ...);

另外,我宁愿将 struct foo 保留为数组,而不是哈希。

4

1 回答 1

5

\$foo->a将是对 的返回值的引用$foo->a,这肯定不是您想要的。

您可能可以使用将值存储在哈希引用中GetOptions的能力,然后将其传递给您的对象:new

my $opt = {};
GetOptions($opt, 'a=i', 'b=i', ...)
my $foo = foo->new(%$opt);
于 2012-08-23T05:15:55.630 回答