无法使用原型将哈希引用传递给Perl中的子例程?

时间:2016-10-31 01:09:12

标签: perl

所以我似乎无法将哈希引用传递给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;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

您从未向$hashRef$evidenceCode分配任何内容。取代

my ($hashRef, $evidenceCode);

my ($hashRef, $evidenceCode) = @_;