perl - 访问数组中结构的字段

标签 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”对 blessing $tag 进行变体(因为无法在 unblessed 上调用 value ... 是当前错误),将 $tag 解引用为散列,等等。

最佳答案

你的错误是在@data的初始化中:

my @data = []; # the same as my @data = ( [] );

您声明名为 @data 的数组并使用一个空数组引用对其进行初始化。 接下来使用 push 将第二个元素推送到数组。您的类(class)现在位于 $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";

关于perl - 访问数组中结构的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750942/

相关文章:

perl - -B 文件测试的可靠性如何?

linux - perl中的json解码

perl - 不同版本的 Perl 是否需要不同的 CPAN 模块安装?

perl - 如何在 Template::Toolkit 中分析模板性能?

Ubuntu 上的 Perl Ora2Pg

perl - 如何以相反的字节顺序打印变量?

windows - 如何使用事件perl脚本来监控Windows服务

perl - 在什么情况下 "unless"与 "if not"不同?

mysql - 我如何从 Perl 调用 MySQL 存储过程?

perl - 如何在 Perl 中创建所有大小小于 n 的子集?