gpt4 book ai didi

perl - Perl 的默认对象到字符串转换在哪里定义?

转载 作者:行者123 更新时间:2023-12-04 22:56:05 25 4
gpt4 key购买 nike

如果我在 Perl 中打印对受祝福对象的引用,我会得到如下内容:

Foo::Bar=HASH(0x0123456789ab)

该代码在哪里定义?第一部分是 ref($obj) ,但 HASH 十六进制值从何而来?

我正在尝试为具有可选 to_string 属性的对象编写 name 重载运算符。如果提供了 name,我希望它打印
Foo::Bar(name=joe)

如果 name 未定义,则回退到默认的 Perl 字符串。所以我要么必须能够从我的代码中调用 Perl 的转换代码,要么自己编写等效的代码,因此我的问题。

最佳答案

我不相信格式被记录在案,但它不太可能改变。它相当于

use Scalar::Util qw( blessed refaddr reftype );

my $pkg = blessed($ref);
my $str = sprintf("%s%s(0x%x)",
( defined($pkg) ? "$pkg=" : "" ),
reftype($ref),
refaddr($ref),
);

您可以使用 blessed , reftyperefaddr如果您想要 Perl 引用字符串化的组件,但以下是获取 Perl 引用字符串化的最佳方法:
use overload qw( );

my $str = overload::StrVal($ref);

关于perl - Perl 的默认对象到字符串转换在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46204472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com