如何取消引用 Perl 中的数组?

How to de-reference an array in Perl?

sub main
{
    my (@A) = @_;
}
main([1,3,5,7]);

使用上述代码输入数组。我无法获得原始数组;当我简单地 print "@A" 时,我得到了参考。但是,我找不到从中获取实际数组的方法。谁能解释一下这里发生了什么?

您将数组引用(这是一个标量值)传递给子程序。您的 @A 变量是一个数组数组。数组只有一个元素,它是您传递给 sub 的数组引用。如果你想打印你传递的元素,你可以使用@{ }语法:

print "@{ $A[0] }\n";

但是,由于您刚刚传递了一个数组引用,所以这不太可能是您想要的。 检索它的一种方法是将其分配给子程序中的标量变量。然后你可以使用 @{ }:

引用它并将它分配给数组变量
use warnings;
use strict;

main([1,3,5,7]);

sub main
{
    my ($aref) = @_;
    my @A = @{ $aref };
    print "@A\n";
}

打印:

1 3 5 7