如何取消引用 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
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