那里 - 刚开始学习Perl。
我正在做的是将数组放入子函数中 - 可以在1行中更简单地完成吗?
sub my_sub {
my $ref_array = shift;
my @array = @$ref_array;
}
答案 0 :(得分:3)
如果你想要shift
的效果,
sub my_sub {
my @array = @{+shift};
}
将unary +
operator强制shift
视为表达式,而不是变量名。 (否则@{shift}
表示与@shift
相同。)
答案 1 :(得分:2)
你可以简化为
sub my_sub {
my @array = @{$_[0]};
}
其中@_
是默认数组/列表,用于参数传递。
答案 2 :(得分:2)
另一种方法是不要担心它是一个arrayref - 只要保持这种方式并在原来的其余部分中使用它。
答案 3 :(得分:0)
这便宜得多:
local *array = shift();