perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...
一、引用
常見數據類型的引用定義:
數據類型 ? ? ? ? ? 定義????? 舉例
標量變量?????????? \$Var????????????????????????????? $Pointer? =? \$Var
數組 ? ? ? ? ? ? ? ? \@Array????????????????????????? $Pointer? =? \@Array
哈希變量?????????? \%Hash?????????????????????????? $Pointer? =? \%Hash
文件句柄?????????? \*FILEHANDLE??????????????? $Pointer? =? \
常量 ? ? ? ? ? ? ? ? \常量?????????????????????????????? $Pointer? =? \3.1415926
子程序????????????? \&SubRoutine????????????????? $Pointer? =? \&SubRoutine
匿名數組 ? ? ? ? ? ?[ LIST ]??????????????????????????? $Pointer? =? [ “Smith”,“Jack”,“Jimmy”,“ZhaZha”]
匿名哈希變量 ? ? { Key=>Value }??????????????? $Pointer? = { Key1=>Value1,Key2=>Value2}
匿名子程序 ? ? ? ?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進行dereference,然后才可以使用array中的元素。
以下是傳遞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}
三、hash的reference和dereference
%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'
};#匿名引用
總結
以上是生活随笔為你收集整理的perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql sql 字符串字段保留数字_
- 下一篇: java的按钮点击事件_[转载]java