微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl通过哈希引用删除基本密钥

my %myHash = (
    key1 => {
        test1 => 1,test2 => 2,},key2 => {
        test1 => 3,test2 => 4,);

my $myRef = $myHash{ "key". ((~~keys %myHash) + 1) } //= {
    test1 => 5,test2 => 6,};

我,并假设上述实际上是实用的.我如何通过引用删除这个新创建的密钥?

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);

怎么样?还是不推荐?

解决方法

这将删除%myHash中$myRef的每次出现:
for my $key (keys %myHash) {
    if ($myHash{$key} == $myRef) {
        delete $myHash{$key};
    }
}

您可以使用==来测试使用相同内存地址的引用.

我认为这是一个坏主意,但我在嘲笑你.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐