如何确定Perl中有福的参考类型?
发布时间:2020-12-15 21:19:18 所属栏目:大数据 来源:网络整理
导读:在Perl中,一个对象只是对已经被保存到特定类中的任何基本的Perl数据类型的引用。当你在一个无耻的引用上使用ref()函数时,你会被告知参考的数据类型是什么。但是,当您在一个有福的引用上调用ref()时,将返回引用已被保存的包的名称。 我想知道真正的基础类
在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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |