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'

};#匿名引用

相关文章
相关标签/搜索