打印

关于perl中的引用

作者 supersun. Posted in 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>

 


    发布评论...