首页 > 解决方案 > 如何在 Perl 中取消引用数组?

问题描述

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

数组已使用上述代码输入。我无法获得原始数组;当我简单时print "@A",我得到了参考。但是,我找不到从中获取实际数组的方法。任何人都可以对这里发生的事情有所了解吗?

标签: arraysperldereference

解决方案


您将数组引用(这是一个标量值)传递给子。您的@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

推荐阅读