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