Perl获取密钥的值

时间:2016-05-04 13:31:13

标签: perl

我一直试图创建一个键数组(example_com,example_ca ..etc),如果它们设置为1,我尝试使用for循环和foreach循环,但一直得到ARRAY#错误。

$VAR1 = [
      {
        'example_com' => '1',
        'example_ca' => '1'
      }
    ];

谢谢

3 个答案:

答案 0 :(得分:4)

这是因为你有一个包含哈希的数组。数组长一个元素。

所以你得到'通过解除引用元素零到散列。

因此:

my $hash_ref = $VAR1->[0]; 
print join "\n", keys %{$hash_ref},"\n"; 

foreach my $key ( keys %{$VAR1->[0]} ) {
   print "$key => $VAR1->[0]{$key}\n";
}

答案 1 :(得分:1)

正是您的源数据:

my @array_of_keys =  ();

for( keys %{ $VAR1->[0] } ) {
    push @array_of_keys, $_   if $VAR1->[0]{ $_ } eq '1';
}

print "Keys with 1: @array_of_keys";

答案 2 :(得分:0)

如果容器数组中有多个哈希值,如何获取键数组的扩展示例:

`r format(21645, scientific=FALSE)`

输出:

my $VAR1 = [
        {
          'example_com' => '1',
          'example_ca'  => '1',
          'not_set'      => '0'
        },
        {
          'EXAMPLE_com' => '1',
          'EXAMPLE_ca'  => '1',
          'NOT_SET'      => '0',
        }
];

my @arrayOfHashes = @{$VAR1};

foreach my $array (@arrayOfHashes)
{
    my @onlyOnes; 
    my @arrayOfKeys = sort keys %{$array};
    foreach my $key (@arrayOfKeys)
    {
        next if ($array->{$key} ne 1); 
        push @onlyOnes, $key;
    }

    print "\nKey names:\n";
    foreach my $key (@onlyOnes)
    {
        print "$key\n";
    }
}