$a{0xg}="aaa";
これはなんでエラーになるんでしょうかね?
perlにおいて0から始まるリテラルは8進数とみなされます。
ラクダ本のリテラルの項目をよく読んでみてください。