【问题标题】:How to de-reference an array in Perl?如何在 Perl 中取消引用数组?
【发布时间】:2021-03-23 03:38:57
【问题描述】:
sub main
{
    my (@A) = @_;
}
main([1,3,5,7]);

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

【问题讨论】:

    标签: arrays perl dereference


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多