Perl中已定义类实例赋值给哈希后值为undef的原因是什么
Perl代码输出异常原因说明
核心错误点
你为哈希%a赋值的语句存在语法错误:
# 错误写法 my %a = {'1' => $a1};
在Perl语法中,{}是哈希引用构造符,执行后会返回一个哈希类型的标量引用。你将单个哈希引用赋值给需要接收偶数个元素列表的哈希变量%a时,Perl会按如下规则处理:
- 仅有1个传入元素时,会将该元素的字符串化结果(也就是你输出中看到的
HASH(0x247c568))作为哈希的key - 因为没有第二个元素配对为value,对应的值会被自动设为
undef,最终就出现了你看到的Dumper输出结果。
修正方案
将赋值时的{}替换为列表括号(),直接传入键值对列表给哈希赋值即可:
# 正确写法 my %a = ('1' => $a1);
修正后运行代码,Dumper输出中key1对应的值就会是你预期的A1类实例引用。
内容的提问来源于stack exchange,提问作者urie
相关产品推荐
相关产品推荐

