目的 ハッシュを作成して出力し、大きなドキュメント内の単語の頻度を数えます。結果ファイルに予期しないエントリがいくつか含まれています。
問題 ハッシュに余分な出力 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
$testhash{$word} が NULL の場合、if 条件を使用し、行を出力しないことで問題を解決できることを知っていることに注意してください。私の質問は、この予期しないエントリの理由を理解することです. ハッシュの宣言や印刷と関係がありますか?
編集:コードを再実行するたびに、番号 0x55b0ac が変更されます