我一直试图创建一个键数组(example_com,example_ca ..etc),如果它们设置为1,我尝试使用for循环和foreach循环,但一直得到ARRAY#错误。
$VAR1 = [
{
'example_com' => '1',
'example_ca' => '1'
}
];
谢谢
答案 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";
}
}