Perl 即使未设置密钥,哈希也包含密钥
在我的代码中,我创建了一个Perl 即使未设置密钥,哈希也包含密钥,perl,hash,key,Perl,Hash,Key,在我的代码中,我创建了一个散列,然后将其传递给一个函数 my %profile_hash = (); getProfileInfo(\%profile_hash, $profile_path); 在函数中,我执行以下操作: sub getProfileInfo{ my %profile_hash = shift; my $profile_path = shift; foreach my $key (keys (%profile_hash)){ pri
散列
,然后将其传递给一个函数
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)
谁能告诉我为什么会发生这种情况?如果在将键传递给函数之前打印,则该键将如预期一样为空
感谢您的帮助。您需要在sub中使用标量来获取传递的哈希引用,然后在循环中对其进行延迟:
sub getProfileInfo{
my $profile_hash_ref = shift;
my $profile_path = shift;
foreach my $key (keys (%{ $profile_hash_ref })){
print $key;
}
}
始终使用严格的和使用警告
。如果你一直在使用它们,你会得到这样一条信息:“引用找到了一个甚至大小的列表”,我一直在使用它们。这是CGI
脚本的一部分,结果发现这个错误被打印到了我错过的日志中。谢谢toolic。我不知道这个必须取消引用。