访问数组中的结构字段

时间:2013-11-03 07:55:04

标签: perl

我有一个结构数组(来自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解除引用为哈希等等。

1 个答案:

答案 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";