所以我似乎无法将哈希引用传递给Perl中的子例程。我试图使用原型传递引用,我认为这可能是问题的来源。简而言之,当在子例程中取消引用哈希引用并尝试打印出键的数组时,该数组是空的,而我可以确认它在子例程之外打印时确实包含键。
子程序的前向定义:
.
有问题的子程序。说出来的功能是看看子程序中发生了什么,到目前为止,只有“一个人”这样做。打印出来:
sub getEvidenceCodeFilteredHash (\%$);
在哈希和标量上调用子例程:
sub getEvidenceCodeFilteredHash (\%$) {
my ($hashRef, $evidenceCode);
my %evidenceCodeFilteredHash;
say "ONE";
say (keys %{$hashRef});
foreach (keys %{$hashRef}) {
say "TWO";
if ($_ ne '!gaf-version: 2.0') {
say "THREE";
${$hashRef}{$_} =~ /^\S+?\s+?\S+?\s+?\S+?\s+?\S+?\s+?\S+?\s+?(\S+?)\s.$/;
if ($evidenceCode eq $1) {
say "FOUR";
$evidenceCodeFilteredHash{$_} = ${$hashRef}{$_};
say $evidenceCodeFilteredHash{$_};
}
}
}
return %evidenceCodeFilteredHash;
}
谢谢!
答案 0 :(得分:0)
您从未向$hashRef
和$evidenceCode
分配任何内容。取代
my ($hashRef, $evidenceCode);
与
my ($hashRef, $evidenceCode) = @_;