my %myHash = (
key1 => {
test1 => 1,
test2 => 2,
},
key2 => {
test1 => 3,
test2 => 4,
},
);
my $myRef = $myHash{ "key". ((~~keys %myHash) + 1) } //= {
test1 => 5,
test2 => 6,
};
幽默我,並假設上述是實際的。我怎麼能通過引用刪除這個新創建的密鑰?Perl通過哈希刪除基本密鑰參考
delete $myRef;
顯然行不通
編輯: 所以從zostay我有以下...
sub deleteRef {
my ($hash_var, $hash_ref) = @_;
for (keys %$hash_var) {
delete $hash_var->{$_} if ($hash_var->{$_} == $hash_ref);
}
}
用法:
deleteRef(\%myHash, $myRef);
這麼如何?仍然不推薦?
所以,我的意思是因爲我正在訪問許多行上的散列哈希值,所以使用對散列鍵的引用來減少「類型」。你對子程序有什麼看法? – 2012-08-16 17:14:51
該子很好。我不建議做參考比較,因爲這樣的事情幾乎可以普遍得到更好的解決。然而,「更好」的定義是需要辯論的,也是你試圖解決的實際問題。不知道實際的問題,我不知道什麼是更好的解決方案。 – zostay 2012-08-16 17:31:59