所以我有这样的东西:
@result = myfun \@args;
我想做这样的事情:
sub myfun{
foreach (@@_){ $_ = $_**2; } #foreach element the argument is referring to square the element
return @@_; # return the list that the argument is referring to
}
有没有办法做到这一点?
答案 0 :(得分:2)
您可以尝试:
my @args = 1..5;
my @result = myfun( \@args );
say for @result;
sub myfun{
map {$_**2} @{$_[0]};
}
输出:
1
4
9
16
25
答案 1 :(得分:2)
如前所述,一个人可以简单地使用
sub myfun { map { $_ ** 2 } @{ $_[0] } }
my @args = 1..5;
say for myfun(\@args);
但是人们不得不怀疑为什么您希望通过参考。以下更简单:
sub myfun { map { $_ ** 2 } @_ }
my @args = 1..5;
say for myfun(@args);
如果您恰好在外部具有参考,则可以始终在此处“拉平”它,而不是在子窗口中。
sub myfun { map { $_ ** 2 } @_ }
my $args = [ 1..5 ];
say for myfun(@$args);
答案 2 :(得分:1)
如何告诉perl,选择@_元素并取消引用而无需 创建更多的引用或变量?
要取消引用SIGTERM
的元素,例如说@_
,请将其括在$_[0]
中,并以任何类型的语法将其命名为变量名(不包括符号)。 。例如。 {}
代替@{$_[0]}
或@array
代替${$_[0]}[0]
。
有关更多示例,请参见http://perlmonks.org?node=References+quick+reference。