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

如何通过bless生成的Perl对象引用获取内部scalar值?

如何从该Perl对象中获取标量值

你可以直接对$obj进行解引用,因为这个对象本质就是被bless标记过的标量引用:

my $value = $$obj;
print $value; # 输出 123

原理说明

这段代码里,bless do { \( my $scalar = 123; ) }, 'Some::Class' 的作用是把指向标量123的引用,关联到Some::Class类上,让它成为一个对象。但Perl的对象本质就是被bless到某个包的引用,所以不管它被标记成什么类,只要它底层是标量引用,直接解引用就能拿到对应的标量值。

你也可以用${ $obj }的写法,和$$obj效果完全一致,只是语法形式不同。如果需要先确认引用类型,也可以做个判断:

if (ref $obj eq 'SCALAR') {
    my $value = $$obj;
    print $value;
}

内容的提问来源于stack exchange,提问作者НЕВСКИЙ БЛЯДИНА

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:12:02