我应该如何比较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函数,确保双方实际上都是引用。

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...