Что означает @_ в начале кода на Perl? - PullRequest
0 голосов
/ 06 июля 2011
A::(tmp:7):     our $_ = 1;
  DB<9> V :: _
@_ = (
   0  0
   1  '_'
   2  *main::_
   3  0
   4  '-1'
)
  DB<10>

Выше приведен вывод V :: _ в 1-й строке кода, что означает @_?

Ответы [ 3 ]

5 голосов
/ 06 июля 2011

@_ - это переменная, которая содержит параметры подпрограммы.Когда вы смотрите на это с помощью V в отладчике, кажется, что он показывает параметры для некоторой подпрограммы «отладчик».

1 голос
/ 06 июля 2011

Последние версии perldoc позволяют искать переменные с помощью переключателя -v, который извлекает только ту часть, которая вам нужна, из perlvar :

  $ perldoc -v '@_'
   @ARG
   @_      Within a subroutine the array @_ contains the parameters passed
           to that subroutine.  See perlsub.
0 голосов
/ 06 июля 2011

http://perldoc.perl.org/perlvar.html#General-Variables

Внутри подпрограммы массив @_ содержит параметры, переданные этой подпрограмме.Внутри подпрограммы @_ является массивом по умолчанию для операторов массива push, pop, shift и unshift


По сути, @_ является эквивалентом массива $_


use Data::Dumper;

foo(0,'_',*main::_,0,-1);

sub foo {
   print Dumper(\@_);
}

Выходы:

$VAR1 = [
          0,
          '_',
          *::_,
          0,
          -1
        ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...