我有一个结构数组(来自Class :: Struct),我无法访问他们的'字段'。我已经查看了其他解决方案,例如Perl - Class::Struct Deferencing array和Perl文档但没有成功。我的代码是:
use Class::Struct;
use Data::Dump qw(dump);
struct( Tag => {
attributes => '%',
value => '$'
});
my @data = [];
push @data, Tag->new(attributes => { 'id' => 1 }, value => "hello world!");
dump @data;
my $tag = $data[0];
my $value = $tag->value;
print $value, "\n";
我尝试使用'Tag'祝福$ tag的变体(因为无法在未经处理的情况下调用值...是当前错误),将$ tag解除引用为哈希等等。
答案 0 :(得分:6)
您的错误是@data
的初始化:
my @data = []; # the same as my @data = ( [] );
您声明一个名为@data
的数组,并使用一个empy数组ref初始化它。
接下来,使用push
将第二个元素推送到数组。您的班级现在在$data[1]
。
所以固定的例子:
struct( Tag => {
attributes => '%',
value => '$'
});
my @data;
push @data, Tag->new(attributes => { 'id' => 1 }, value => "hello world!");
my $tag = $data[0];
my $value = $tag->value;
print $value, "\n";