Perl解除引用语法

时间:2017-09-30 22:47:04

标签: perl reference

在Perl中取消引用引用的语法是什么?

1 个答案:

答案 0 :(得分:16)

                              Direct           Using References     Using References
                                               Circumfix Syntax[1]   Postfix Syntax

scalar  itself                $s               ${$sr}               $sr->$* [3]

array   itself                @a               @{$ar}               $ar->@* [3]
array   element               $a[0]            ${$ar}[0]            $ar->[0]
array   slice                 @a[0,1,2]        @{$ar}[0,1,2]        $ar->@[0,1,2] [3]
array   index/value slice[2]   %a[0,1,2]        %{$ar}[0,1,2]        $ar->%[0,1,2] [3]
array   last index            $#a              $#{$ar}              $ar->$#* [3]

hash    itself                %h               %{$hr}               $hr->%* [3]
hash    element               $h{'a'}          ${$hr}{'a'}          $hr->{'a'}
hash    slice                 @h{'a','b','c'}  @{$hr}{'a','b','c'}  $hr->@{'a','b','c'} [3]
hash    key/value slice[2]     %h{'a','b','c'}  %{$hr}{'a','b','c'}  $hr->%{'a','b','c'} [3]

code    call                  func(@args)
code    w/ prototype ignored  &func(@args)     &{$cr}(@args)        $cr->(@args)
code    w/ inherited @_       &func            &{$cr}               $cr->&* [3]

glob    itself                *glob            *{$gr}               $gr->** [3]
glob    slot                  *glob{ARRAY}     *{$gr}{ARRAY}        $gr->*{ARRAY} [3]

注意:

  1. 当curlies的内容只是一个时,$sr$ar$hr$cr$gr周围的大括号是可选的标量。

    如果使用它们,那些curlies会形成块,因此它们实际上可以包含多个语句。

  2. 需要Perl 5.20 +。

  3. 需要Perl 5.24+。通过添加use feature qw( postderef );no warnings qw( experimental::postderef );,或添加use experimental qw( postderef );,可在Perl 5.20+中使用。

  4. 另见: