DVK*_*DVK 115
perldoc perlvar是第一个检查任何特殊命名的Perl变量信息的地方.
引用:
@_:在子例程中,数组@_包含传递给该子例程的参数.
更多细节可以在perlvar链接的perldoc perlsub(Perl子例程)中找到:
传入的任何参数都会显示在数组中
@_.因此,如果您使用两个参数调用函数,那么它们将存储在
$_[0]和中$_[1].该数组
@_是一个本地数组,但其元素是实际标量参数的别名.特别是,如果更新元素$ _ [0],则更新相应的参数(如果不可更新,则会发生错误).如果参数是调用函数时不存在的数组或散列元素,则仅在修改它时(或者如果)修改该元素或者对其进行引用.(Perl的某些早期版本创建了元素,无论元素是否已分配给.)分配给整个数组@_会删除该别名,并且不会更新任何参数.
eck*_*kes 25
通常,使用变量扩展传递给sub的@_参数:
sub test{
my ($a, $b, $c) = @_;
...
}
# call the test sub with the parameters
test('alice', 'bob', 'charlie');
Run Code Online (Sandbox Code Playgroud)
问题是Perl的@_ 意思.该问题的答案是,只要$_意味着它在Perl,@_同样意味着他们.
似乎没有人提到它的意义的这个关键方面- 以及他们的意义.
因此它们既可以用作代词,也可以用作主题词.
它们通常具有名义上的前因,但并非总是如此.
在大多数情况下,您还可以对单个变量使用shift:
$var1 = shift;
Run Code Online (Sandbox Code Playgroud)
这是一个你应该进一步研究的主题,因为Perl有许多有趣的方法来访问子例程中的外部信息.