【发布时间】:2021-03-23 03:38:57
【问题描述】:
sub main
{
my (@A) = @_;
}
main([1,3,5,7]);
数组已使用上述代码输入。我无法获得原始数组;当我只是 print "@A" 时,我得到了参考。但是,我找不到从中获取实际数组的方法。任何人都可以解释一下这里发生了什么吗?
【问题讨论】:
标签: arrays perl dereference
sub main
{
my (@A) = @_;
}
main([1,3,5,7]);
数组已使用上述代码输入。我无法获得原始数组;当我只是 print "@A" 时,我得到了参考。但是,我找不到从中获取实际数组的方法。任何人都可以解释一下这里发生了什么吗?
【问题讨论】:
标签: arrays perl dereference
您将数组引用(它是一个标量值)传递给子。您的 @A 变量是一个数组数组。数组只有一个元素,它是您传递给子的数组引用。如果要打印传递的元素,可以使用@{ } 语法:
print "@{ $A[0] }\n";
但是,由于您只是传递了一个数组 ref,因此这不太可能是您想要的。
检索它的一种方法是将其分配给子中的标量变量。然后您可以使用@{ } 将其尊重并分配给数组变量:
use warnings;
use strict;
main([1,3,5,7]);
sub main
{
my ($aref) = @_;
my @A = @{ $aref };
print "@A\n";
}
打印:
1 3 5 7
【讨论】: