1に設定されている場合、キーの配列(example_com、example_caなど)を作成しようとしていますが、forループとforeachループを使用しようとしましたが、ARRAY #エラー。Perlがキーの値を取得する
$VAR1 = [
{
'example_com' => '1',
'example_ca' => '1'
}
];
おかげ
1に設定されている場合、キーの配列(example_com、example_caなど)を作成しようとしていますが、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
あなたはハッシュを含む配列を持っているので、これはとなります。配列は1要素長です。
ハッシュに到達するには、要素ゼロを逆参照します。
したがって:あなたのソース・データの正確
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";
$ VAR1はハッシュである要素を1つしか含まない配列なので、 'if($ VAR1 - > [0] {example_com} == 1)'です。 – eballes
私は実際にそれをループさせようとしていますが、複数のキーが存在する可能性があります – Deano
次にもう少し詳細を表示してください。 _複数のキーが存在する可能性があります=>それはどういう意味ですか?配列内に複数の要素がありますか?あなたはすでに複数のキーを持っていますが、あなたの質問に応じて特定の既知のもの(example_com)をチェックしたいとします。 – eballes