加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 21:45:32 所属栏目:大数据 来源:网络整理
导读:my %myHash = ( key1 = { test1 = 1,test2 = 2,},key2 = { test1 = 3,test2 = 4,);my $myRef = $myHash{ "key". ((~~keys %myHash) + 1) } //= { test1 = 5,test2 = 6,}; 幽默我,并假设上述实际上是实用的.我如何通过引用删除这个新创建的密钥? delete $myR
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};
    }
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读