我通过了参考,我想知道它的类型。以此目的, “ref”适用于未经处理的引用,但是在返回的祝福引用上 它受祝福的包装名称。
$a=[];
print ref $a;
ARRAY
bless $a, 'mytype';
print ref $a;
MYTYPE
我如何获得该类型?
答案 0 :(得分:15)
use Scalar::Util 'reftype';
print reftype bless {}; # HASH
答案 1 :(得分:7)
你可以使用Scalar :: Util :: reftype,但一般情况下你不需要这样做。通常人们问这个问题表明他们正在以不太理想的方式做其他事情。那么,为什么你认为你需要知道?
答案 2 :(得分:0)
如上面的评论中所述..如果您认为外部代码需要了解受祝福对象的实现细节,那么您就错了。如果需要在对象上执行类似Data :: Dumper的操作,请在包含实现逻辑的模块上创建dump()方法。你可以在UNIVERSAL类的自动加载器中添加一些代码,这样如果你试图在没有定义它的对象上调用dump(),它就会调用Data :: Dumper。