perl 的 hash 里没有所谓初始化的概念. 也或者说, 当你 "制造" 了一个 key, 其初始值就是 undef.
我们初始化一个值是为了编程时就算忘了赋某个值时, 还有个基本值可供使用.
但 perl 的 hash 里可以装最单纯的 scalar, 也可以是 array, reference, 甚至是 sub.
这跟 java 或很多其他语言不一样, 要事先宣告 data type. 中间任何时候改变都可以.
所以, 也没有初始化的意义了. 初始化并不能给你甚麼特别的保障.
lrepre 说的很对, 如果是 perl 的新手, 最好都用上 -w 和 use strict. 还有日後你需要用到更复杂的 hash 时, 你还会需要用上
no autovivification; # 这个模块是防止你在 if ( ... ) 中意外地制造了个 key 出来