我有一个结构数组(来自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解除引用为哈希等等.
您的错误是在初始化时@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)