perl 哈希包含一个键,即使没有设置键

wkftcu5l  于 2023-06-23  发布在  Perl
关注(0)|答案(1)|浏览(119)

在我的代码中,我创建了一个hash,然后将其传递给一个函数。

my %profile_hash = ();

getProfileInfo(\%profile_hash, $profile_path);

在函数中,我执行以下操作:

sub getProfileInfo{
    my %profile_hash = shift;
    my $profile_path = shift;

    foreach my $key (keys (%profile_hash)){
        print $key;
    }
}

我发现当我打印密钥时,我得到:
HASH(0x1b64448)
有人能告诉我为什么会发生这种情况吗?如果我在将keys传递给函数之前打印它,它会像预期的那样为空。

a6b3iqyw

a6b3iqyw1#

你需要在你的sub中使用一个标量来获取传递的hash ref,然后在你的循环中删除它:

sub getProfileInfo{
    my $profile_hash_ref = shift;
    my $profile_path = shift;

    foreach my $key (keys (%{ $profile_hash_ref })){
        print $key;
    }
}

通过参考

相关问题