目的 我正在制作一个散列并打印它以计算大型文档中单词的频率。在结果文件中,我收到了一些意想不到的条目。
问题 哈希有一个额外的输出 HASH(0x55b0ac)
我在故障排除方面的进展
在将代码分解成更小的部分并单独测试每个组件之后,我发现问题出在打印哈希上。我在这里写了一小段代码,它复制了同样的问题。
代码:
my %testhash = {};
$teststr = "using this for testing this that";
foreach $word (split(' ', lc $teststr)) {
$testhash{$word}++;
}
foreach $word (sort keys %testhash) {
print $word."\t".$testhash{$word}."\n";
}
预期产出
for 1
testing 1
that 1
this 2
using 1
获得的输出
HASH(0x55b0ac)
for 1
testing 1
that 1
this 2
using 1
注意 我知道我的问题可以通过使用 if 条件来解决,如果 $testhash{$word} 为 NULL,则不打印一行。我的问题是了解这个意外进入的原因。它与声明哈希或打印它有关吗?
编辑:每次我重新运行代码时,数字 0x55b0ac 都会改变