【发布时间】:2010-11-01 16:19:20
【问题描述】:
我收到了一个引用,我想知道它的类型。以此目的, “ref”适用于未受祝福的引用,但在受祝福的引用上它会返回 它被祝福的包名。
$a=[];
print ref $a;
数组
bless $a, 'mytype';
print ref $a;
我的类型
如何获取类型?
【问题讨论】:
标签: perl
我收到了一个引用,我想知道它的类型。以此目的, “ref”适用于未受祝福的引用,但在受祝福的引用上它会返回 它被祝福的包名。
$a=[];
print ref $a;
数组
bless $a, 'mytype';
print ref $a;
我的类型
如何获取类型?
【问题讨论】:
标签: perl
use Scalar::Util 'reftype';
print reftype bless {}; # HASH
【讨论】:
您可以为此使用 Scalar::Util::reftype,但通常这不是您需要做的事情。通常问这个问题的人表明他们正在以不太理想的方式做其他事情。那么,为什么你认为你需要知道呢?
【讨论】:
如上面评论中所述.. 如果您认为外部代码需要了解受祝福对象的实现细节,那么您是不正确的。如果您需要对对象执行 Data::Dumper 之类的操作,请在包含实现逻辑的模块上创建一个 dump() 方法。您可以在 UNIVERSAL 类的自动加载器中添加一些代码,以便在您尝试对未定义它的对象调用 dump() 时它只调用 Data::Dumper。
【讨论】: