perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...
一、引用
常見數(shù)據(jù)類型的引用定義:
數(shù)據(jù)類型 ? ? ? ? ? 定義????? 舉例
標(biāo)量變量?????????? \$Var????????????????????????????? $Pointer? =? \$Var
數(shù)組 ? ? ? ? ? ? ? ? \@Array????????????????????????? $Pointer? =? \@Array
哈希變量?????????? \%Hash?????????????????????????? $Pointer? =? \%Hash
文件句柄?????????? \*FILEHANDLE??????????????? $Pointer? =? \
常量 ? ? ? ? ? ? ? ? \常量?????????????????????????????? $Pointer? =? \3.1415926
子程序????????????? \&SubRoutine????????????????? $Pointer? =? \&SubRoutine
匿名數(shù)組 ? ? ? ? ? ?[ LIST ]??????????????????????????? $Pointer? =? [ “Smith”,“Jack”,“Jimmy”,“ZhaZha”]
匿名哈希變量 ? ? { Key=>Value }??????????????? $Pointer? = { Key1=>Value1,Key2=>Value2}
匿名子程序 ? ? ? ?sub {}?????????????????????????????? $Pointer? =? sub { printf( “Hello,Perl World\n”);}
對(duì)象引用?????????? bless? $self;
reference是另一個(gè)變量的地址。reference可以指向array,hash,或perl代碼段。reference使perl代碼運(yùn)行更快。
二、數(shù)組的引用
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);
以上代碼中,需要對(duì)array的reference進(jìn)行dereference,然后才可以使用array中的元素。
以下是傳遞array的reference到subroutine的優(yōu)點(diǎn):
*如果array傳遞給subroutine,perl將整個(gè)array重新copy到@_中,當(dāng)array比較大時(shí),將非常低效;
*當(dāng)我們需要在subroutine中修改原來的array時(shí),需要傳遞array的reference;
*reference其實(shí)是構(gòu)造復(fù)雜數(shù)據(jù)結(jié)構(gòu)的本質(zhì)。
2)array的reference的dereference
在subroutine中,我們可以使用@{$array_ref}來dereference;取得第一個(gè)元素${$array_ref}[0];
如果只是dereference一個(gè)簡單的scalar變量,可以忽略括號(hào),如下:
@$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'
};#匿名引用
總結(jié)
以上是生活随笔為你收集整理的perl数组硬引用_perl引用和数组 - SibylY的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql sql 字符串字段保留数字_
- 下一篇: python迭代数据类型_在大型数据集上