Perl数据结构 - 在哈希中循环哈希数组

时间:2015-08-27 06:19:35

标签: arrays perl data-structures hash

我需要一个数据结构来保存数据库中某个字段的元数据,我将访问该数据库来编写动态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'}。我加了。现在,我收到一条通知,说使用散列作为引用已弃用(?)但它现在正在打印到控制台!

1 个答案:

答案 0 :(得分:0)

%struct是哈希,而不是哈希引用。因此,$struct->{'values'}不是访问values密钥的正确方法。

for my $elem (@{$struct{values}}) {
    print "$elem->{value}\n";
}