我可以使用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);