次のようなコードがあります。
print "key $_ - $hJobT{$_}\n" foreach keys %hJobT;
%hJobT = map { $_ => 1 } %hJobT;
print "key $_ - $hJobT{$_}\n" foreach keys %hJobT;
プログラムを実行して結果を印刷すると、次のようになります。
key office - 1
key recon - 1
key office - 1
key 1 - 1
key recon - 1
最初の 2 つの結果は、最初の print ステートメントからのものであり、予期されたものです。
そのkey 1 - 1
部分は期待されていません。
明確にするために-コードはループ内にあり、反復すると、特定の条件でキー値が増加します。テストの目的で、ループの最後に exit ステートメントを配置して、最初の反復結果のみを表示するようにしました。したがって、それらは「1」です。(私が無意味に 1 を 1 にマッピングしているようには見えません。) 1 対 1 のマッピングが得られる理由について何か考えはありますか?