在我的代码中,我创建了一个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}},它会按预期为空。
感谢您的帮助。
答案 0 :(得分:2)
你需要在sub中使用一个标量来获取传递的散列引用,然后在你的循环中引用它:
sub getProfileInfo{
my $profile_hash_ref = shift;
my $profile_path = shift;
foreach my $key (keys (%{ $profile_hash_ref })){
print $key;
}
}