perl引用和數組

1、引用

常見數據類型的引用定義: 數組

數據類型           定義      舉例 數據結構

標量變量           \$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代碼運行更快。

2、數組的引用

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}

3、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'

};#匿名引用

相關文章
相關標籤/搜索