如果我在Perl中打印一个受祝福的对象的引用,我会得到这样的结果:
Foo::Bar=HASH(0x0123456789ab)
代码在哪里定义?第一部分是ref($obj)
,但HASH十六进制值从何而来?
我尝试为具有可选name
属性的对象编写to_string
重载运算符。如果提供了name
,我希望打印它
Foo::Bar(name=joe)
如果name
不是undefined,则返回到默认的Perl字符串。因此,我必须能够从我的代码中调用Perl的转换代码,或者自己编写等效的代码,这就是我的问题。
3条答案
按热度按时间jfgube3f1#
我不相信这种格式是有文档记录的,但它不太可能改变。相当于
如果你想要Perl对引用的字符串化的组件,你可以使用
blessed
、reftype
和refaddr
,但是下面是获得Perl对引用的字符串化的最佳方法:cuxqih212#
没关系,当然,在我发布这篇文章后的一分钟,我找到了答案:
(see也停止perl重载或打印内存“地址”的引用)
vlurs2pr3#
一种基于对象的数据(属性)对对象进行字符串化的方法
关于Main
什么指纹
对于所需的打印格式
这个打印