A::(tmp:7): our $_ = 1;
DB<9> V :: _
@_ = (
0 0
1 '_'
2 *main::_
3 0
4 '-1'
)
DB<10>
以上是第一行代码V :: _
的输出,@_
是什么意思?
答案 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
];