假设我们有一个返回引用的子例程
sub aspirin {
my @items = qw(some items in here);
return \@items;
}
Run Code Online (Sandbox Code Playgroud)
另一个子程序采用数组引用
sub beetroot (\@) {
my $lst = shift;
print "$_\n" for @$lst;
}
Run Code Online (Sandbox Code Playgroud)
我想从中获取数组aspirin并beetroot用它提供.我想做点什么(方法A)
my $L = aspirin;
beetroot $L;
Run Code Online (Sandbox Code Playgroud)
但翻译抱怨,我需要做以下事情(方法B):
my $L = aspirin;
beetroot @$L;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
谢谢你的回答
原型\@并不意味着数组引用.这意味着给我一个数组,但我会得到一个参数作为参数(见perldoc perlsub.
引用:
任何backslashed原型字符代表一个绝对必须以该字符开头的实际参数.作为一部分传递的值
@_将是对子程序调用中给出的实际参数的引用,通过应用于"\"该参数获得.
换句话说,除非你真的知道他们做了什么,否则不要使用原型.