我需要一个数据结构来保存数据库中某个字段的元数据,我将访问该数据库来编写动态SQL。
我使用哈希来存储名称,可能是数据类型等内容。最重要的是,哈希数组包含有关我想要从字段中查询的值的信息,以及名称I想用它们来代替它们。
当我尝试访问该数组的元素时,我得到:
Global symbol "%elem" requires explicit package name at test.pl line 18.
听起来好像注册表示数组元素的循环变量是散列而不是标量的事实。如果我尝试:
foreach my %elem
然后我得到:
Missing $ on loop variable at test.pl line 17 (#1)
到目前为止,我无法找到解决此问题的相关Perl文档。
#!/usr/local/bin/perl
use warnings;
use strict;
use diagnostics;
use POSIX 'strftime';
my %struct = (
#"field" = "foobar",
"values" => [
{value => "Y", name => "FOO"}
, {value => "N", name => "BAR"}
]
);
foreach my $elem (@{$struct->{'values'}}) {
print $elem->{'value'};
}
我希望该计划能够打印出来,并且#34; YN"到控制台。
更新,正如有人指出我需要在循环寻址中使用%hash->{'ref'}
。我加了。现在,我收到一条通知,说使用散列作为引用已弃用(?)但它现在正在打印到控制台!
答案 0 :(得分:0)
%struct
是哈希,而不是哈希引用。因此,$struct->{'values'}
不是访问values
密钥的正确方法。
for my $elem (@{$struct{values}}) {
print "$elem->{value}\n";
}