@_在Perl中的代码开头是什么意思?

时间:2011-07-06 01:52:59

标签: perl

A::(tmp:7):     our $_ = 1;
  DB<9> V :: _
@_ = (
   0  0
   1  '_'
   2  *main::_
   3  0
   4  '-1'
)
  DB<10>

以上是第一行代码V :: _的输出,@_是什么意思?

3 个答案:

答案 0 :(得分:5)

@_是保存子例程参数的变量。 当您在调试器中使用V查看它时,它似乎显示了一些内部调试器子例程的参数。

答案 1 :(得分:1)

perldoc的最新版本允许您使用-v开关查找变量,该开关仅从perlvar中提取您需要的部分:

  $ perldoc -v '@_'
   @ARG
   @_      Within a subroutine the array @_ contains the parameters passed
           to that subroutine.  See perlsub.

答案 2 :(得分:0)

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
        ];