You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:36:02