即使没有设置密钥,哈希也包含密钥

时间:2014-10-28 13:15:58

标签: perl hash key

在我的代码中,我创建了一个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传递给函数之前打印{{1}},它会按预期为空。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

你需要在sub中使用一个标量来获取传递的散列引用,然后在你的循环中引用它:

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

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

Pass by Reference