我应该如何比较Perl参考?

前端之家收集整理的这篇文章主要介绍了我应该如何比较Perl参考?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想检查两个引用是否指向同一个对象。看来我可以简单的使用
if ($ref1 == $ref2) { 
 # cheap numeric compare of references
 print "refs 1 and 2 refer to the same thing\n";
}

perlref年所述,但我模糊地记得看到使用某些功能是为了相同的目的。有什么理由我不应该使用简单的数字平等检验吗?

注意我只想知道引用是否指向完全相同的对象。我不寻找一种方法来比较对象的内容

解决方法

默认情况下,参考号码将其编号到其地址。这些引用地址对于每个引用是唯一的,因此它通常可以用于相等检查。

但是,在您显示代码段中,您首先必须确保$ ref1和$ ref2都是实际引用的。否则,由于包含引用地址的常规标量,您可能会收到不正确的结果。

此外,没有什么可以保证对其地址进行numify的引用。例如,对象可以使用重载来影响他们在不同上下文中返回的值。

比直接比较数字相等的引用更为坚实的方法是使用由Scalar::Util提供的refaddr函数,确保双方实际上都是引用。

猜你在找的Perl相关文章