如何确定Perl中有福的参考类型?

前端之家收集整理的这篇文章主要介绍了如何确定Perl中有福的参考类型?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Perl中,一个对象只是对已经被保存到特定类中的任何基本的Perl数据类型的引用。当你在一个无耻的引用上使用ref()函数时,你会被告知参考的数据类型是什么。但是,当您在一个有福的引用上调用ref()时,将返回引用已被保存的包的名称

我想知道真正的基础类型的祝福参考。我该如何确定?

解决方法

Scalar :: Util :: reftype()是最干净的解决方案。 Scalar::Util模块被添加到版本5.7中的Perl内核,但可用于CPAN的旧版本(5.004或更高版本)。

您还可以使用UNIVERSAL :: isa():

$x->isa('HASH')             # if $x is known to be an object
UNIVERSAL::isa($x,'HASH')  # if $x might not be an object or reference

显然,您还需要检查ARRAY和SCALAR类型。 UNIVERSAL模块(作为所有对象的基类)自Perl 5.003以来一直是核心的一部分。

另一种方式 – 容易但有点脏 – 是引用引用。假设类没有重载字符串,你会得到类似于Class = HASH(0x1234ABCD)的东西,你可以解析它来提取底层数据类型:

my $type = ($object =~ /=(.+)\(0x[0-9a-f]+\)$/i);

猜你在找的Perl相关文章