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]); }, ...);

また、構造体 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 に答える