perl:使用Getopt::Long设置Class::Struct字段



我可以使用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]); }, ...);

此外,我宁愿将结构foo保留为数组,而不是散列。

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

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

my $opt = {};
GetOptions($opt, 'a=i', 'b=i', ...)
my $foo = foo->new(%$opt);

最新更新