Синтаксис разыменования Perl

Каков синтаксис для разыменования ссылки в Perl?

Ответ 1

                              Direct           Using References     Using References
                                               Inline Syntax[1]Arrow 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]

Примечания:

  • Скопированные скобки вокруг $sr, $ar, $hr, $cr и $gr являются необязательными, когда содержимое корешков является просто скаляром.

    Если они используются, эти завитки образуют блоки, поэтому они могут фактически содержать несколько операторов.

  • Требуется Perl 5.20 +.

  • Требуется Perl 5.24+. Доступно в Perl 5.20+, добавляя как use feature qw( postderef );, так и no warnings qw( experimental::postderef );.

См. также: