我的哈希看起來是這樣的:grep的嵌套哈希perl的
$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」的星期。 我該怎麼做? 任何幫助將不勝感激。
你有一個無與倫比的]在你的第一個代碼塊。另外,當您應該訪問您的第一個代碼塊所在的hashref時,您正試圖訪問grep行末尾的散列。嘗試使用'keys%{$ hash}'之類的東西從hashref中獲取信息。 – jmcneirney