常見數據類型的引用定義: 數組
數據類型 定義 舉例 數據結構
標量變量 \$Var $Pointer = \$Var less
數組 \@Array $Pointer = \@Array spa
哈希變量 \%Hash $Pointer = \%Hash .net
文件句柄 \*FILEHANDLE $Pointer = \ scala
常量 \常量 $Pointer = \3.1415926 code
子程序 \&SubRoutine $Pointer = \&SubRoutine 對象
匿名數組 [ LIST ] $Pointer = [ 「Smith」,「Jack」,「Jimmy」,「ZhaZha」] get
匿名哈希變量 { Key=>Value } $Pointer = { Key1=>Value1,Key2=>Value2} hash
匿名子程序 sub {} $Pointer = sub { printf( 「Hello,Perl World\n」);}
對象引用 bless $self;
reference是另外一個變量的地址。reference能夠指向array,hash,或perl代碼段。reference使perl代碼運行更快。
1)array的reference
$array_ref = \@array; print $array_ref;#顯示以下ARRAY(0x1a2b3c); sub add_numbers{ my $array_ref= shift; } @numbers = (11,2,3,45); $array_ref = add_numbers(\@numbers);
如下是傳遞array的reference到subroutine的優勢:
*若是array傳遞給subroutine,perl將整個array從新copy到@_中,當array比較大時,將很是低效;
*當咱們須要在subroutine中修改原來的array時,須要傳遞array的reference;
*reference實際上是構造複雜數據結構的本質。
2)array的reference的dereference
在subroutine中,咱們能夠使用@{$array_ref}來dereference;取得第一個元素${$array_ref}[0];
若是隻是dereference一個簡單的scalar變量,能夠忽略括號,以下:
@$array_ref #same as @{$array_ref}
$$array_ref #same as ${$array_ref}
%author = (
'name'=>'Harsha',
'designation' => 'Manager'
);
$hash_ref = \%author;
$name = ${$hash_ref}{name}; #same as my $name = $hash_ref->{name}
my @keys = keys%{$hash_ref}; #same as my @keys = keys%author;
my $hash_ref = {
'name' =>"coco",
'designation' => 'Manager'
};#匿名引用