my $student_properties_of = {
'zdd' => {
'age' => 30,
'hight' => 170,
'id' => '001',
},
'autumn' => {
'age' => 27,
'hight' => 165,
'id' => '002',
}
} ;
引用的赋值
$aref2 = $aref1; 将使得$aref2和$aref1指向同一个数组,如果想将$aref1指向的数组拷贝一份给$aref2的话,使用下面的方法,[]里面对数组进行解引用,而[]以解引用后的数组为内容生成了一个新的匿名数组,又赋值给$aref2。
$aref2 = [@{$aref1}];
注意:不能使用下面的形式,外层的[]是不可缺少的。由于=左边是标量,所以右边的数组会被解释为标量环境,得到的是数组元素个数,而不是元素本身。但是如果加上[]就可以了,这样perl知道这是一个匿名数组的赋值。
$aref2 = @{$aref1};
判断一个变量是否是引用
使用ref函数即可,如果变量是引用则返回真,否则返回假。实际上它更智能,它会返回引用对应的类型,比如HASH或者ARRAY。
my $aref1 = [1, 2, 0] ;
print ref $aref1, "n" ; #输出 ARRAY
if (ref $aref1) {
print "truen" ; #输出 true
}
判断两个引用是否指向同一个目标
可以用eq,这将以字符串的形式判断,也可以使用==
my $aref1 = [1, 2, 0] ;
my $aref2 = $aref1 ;
print $aref1, "n" ;
print $aref2, "n" ;
if ($aref1 eq $aref2) {
print "reference equaln" ;
}
if($aref1 == $aref2) {
print "reference equaln" ;
}
产生如下输出:
ARRAY(0x248bec)
ARRAY(0x248bec)
reference equal (eq)
reference equal (==)









