关于perl中的引用
Perl中的引用为标量类型.可视为C语言中的指针.
引用分为软引用和硬引用.软引用类似于软链接,存储一个变量的名字.而硬引用类似于硬链接,存储一个变量的内存地址.
软引用
$scalar="hello"; </p> <p style="margin: 0in; font-family: Verdana; font-size: 10.5pt; color: #444444;">$refer="scalar"; </p> <p style="margin: 0in; font-family: Verdana; font-size: 10.5pt; color: #444444;">print $$refer; #打印"hello"
硬引用
$scalar="hello"; </p> <p style="margin: 0in; font-family: Verdana; font-size: 10.5pt; color: #444444;">$refer=\$scalar;
print $$refer; #打印"hello"
反斜线操作符'\'与C语言中传递地址的操作符&功能类似,在软引用中$refer等于字符串scalar,在引用中$refer是$scalar的地址.不推荐使用软引用.
$refer=\@arrary; 数组引用.
$refer->[0] ${$refer}[0]
$refer=\%hash; 散列引用.
$refer->{$key} ${$refer}{$key}
$refer=[] 用于创建匿名数组.
$refer={} 用于创建匿名散列.
因为在Perl中,数组和散列的元素都必须是标量,所以不能直接建立二维或则三维的.通过引用,可以方便的建立.
例:
@array=( [1,2,3],[4,5,6],[7,8,9]); #建立一个数组,每个元素为一个匿名数组引用.
$array[0] 值为第一个匿名数组的引用.
$array[0]->[0] 表示数组的第一个元素 1
两个下标之间的箭头是可选的
$array[0][0]==$array[0]->[0]==${$array[0]}[0]
my $ref = {"aa"=>1,"bb"=>2,"cc"=>3};
foreach my $key (keys %$ref)
{
print "$key=${$ref}{$key}\n";
}
源文档 <http://blog.sina.com.cn/s/blog_5d3da3280100j2vy.html>

