我一直在试图创建一个键数组(如example_com,example_ca ..等等),如果它们设置为1,我尝试使用for循环和foreach循环,但不断获取ARRAY #错误。Perl获得密钥的值
$VAR1 = [
{
'example_com' => '1',
'example_ca' => '1'
}
];
感谢
我一直在试图创建一个键数组(如example_com,example_ca ..等等),如果它们设置为1,我尝试使用for循环和foreach循环,但不断获取ARRAY #错误。Perl获得密钥的值
$VAR1 = [
{
'example_com' => '1',
'example_ca' => '1'
}
];
感谢
的扩展案例,如果你在你的容器阵列中的多个哈希如何获取密钥的数组:
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";
}
}
输出:
Key names:
example_ca
example_com
Key names:
EXAMPLE_ca
EXAMPLE_com
这将是因为你有一个包含哈希值的数组。该数组是一个元素长。
因此,通过取消引用元素零,您可以获得散列值。
这样:
my $hash_ref = $VAR1->[0];
print join "\n", keys %{$hash_ref},"\n";
foreach my $key (keys %{$VAR1->[0]}) {
print "$key => $VAR1->[0]{$key}\n";
}
正是为你的源数据:
my @array_of_keys = ();
for(keys %{ $VAR1->[0] }) {
push @array_of_keys, $_ if $VAR1->[0]{ $_ } eq '1';
}
print "Keys with 1: @array_of_keys";
'if($ VAR1 - > [0] {example_com} == 1)'因为$ VAR1是一个只包含一个散列元素的数组。 – eballes
我实际上试图循环使用它,可能有多个键 – Deano
然后再显示更多的上下文。 _可能有不止一个key_ =>你的意思是什么?数组中有多个元素?您已经拥有多个密钥,但您想根据您的问题查看特定且已知的密钥(example_com)。 – eballes