访问数组中的结构字段

tim*_*998 2 perl

我有一个结构数组(来自Class :: Struct),我无法访问他们的'字段'.我已经看过其他解决方案,如Perl - Class :: Struct Deferencing数组和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";
Run Code Online (Sandbox Code Playgroud)

我尝试使用'Tag'祝福$ tag的变体(因为无法在未经处理的情况下调用值...是当前错误),将$ tag解除引用为哈希等等.

Sui*_*uic 6

您的错误是在初始化时@data:

my @data = []; # the same as my @data = ( [] );
Run Code Online (Sandbox Code Playgroud)

你声明@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";
Run Code Online (Sandbox Code Playgroud)