私のハッシュは次のようになります:
$VAR1 = {
'1238' => {
'OUT3FA_5' => 65,
'SEV' => '3_major',
'OUT3A_5' => 20,
'OUT3-Fix' => 45,
'IN1' => 85
},
'1226' => {
'OUT3FA_5' => 30,
'SEV' => '4_minor',
'OUT3A_5' => 5,
'OUT3-Fix' => 25,
'IN1' => 40
},
'1239' => {
'OUT3FA_5' => 56,
'SEV' => '4_minor',
'OUT3A_5' => 34,
'OUT3-Fix' => 22,
'IN1' => 94
}]
Perlスクリプトが"SEV"= "4_minor"に対応する値のみを返すようにしたいこの場合、次を返します:
'1226' => {
'OUT3FA_5' => 30,
'SEV' => '4_minor',
'OUT3A_5' => 5,
'OUT3-Fix' => 25,
'IN1' => 40
},
'1239' => {
'OUT3FA_5' => 56,
'SEV' => '4_minor',
'OUT3A_5' => 34,
'OUT3-Fix' => 22,
'IN1' => 94
}
しかし、私がこのようにgrepを使用すると:
my $Sev_Logged = "4_minor";
my $node_hash = {
Week => [
grep { $hash{$_}{'SEV'} eq $Sev_Logged } %hash,
]
};
# Print in json format
my $json = encode_json \%$node_hash;
print $json;
それは返すだけです:
{"Week":["1226","1239"]}
そして、SEV="4_minor"を含む検出された各週に対応する他のすべてのデータを返すようにします。これどうやってするの?どんな助けでも大歓迎です。