小编Jon*_*Sr.的帖子

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

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

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

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

delete $myRef;
Run Code Online (Sandbox Code Playgroud)

显然不起作用

编辑: 所以从zostay我有以下...

sub deleteRef {
    my ( $hash_var, $hash_ref ) = @_;

    for ( keys %$hash_var ) {
        delete $hash_var->{$_} if ($hash_var->{$_} == $hash_ref);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

deleteRef(\%myHash, $myRef);
Run Code Online (Sandbox Code Playgroud)

怎么样?还是不推荐?

perl perl-hash

5
推荐指数
1
解决办法
941
查看次数

标签 统计

perl ×1

perl-hash ×1