【问题标题】:Printing array in perl mason在 perl mason 中打印数组
【发布时间】:2014-04-03 17:45:25
【问题描述】:

我是 Perl Mason 的新手,我正在尝试打印一个数组。我尝试了几种方法,探索了网络,但似乎没有任何效果。

我试过了——

my $arr = getArray();
print "Array : $arr"; # prints "Array : ARRAY(0xcd421774)"
my $size = scalar $arr;
print "Size : $size"; # prints "size ARRAY(0xcd421774)"

我也尝试打印数组的第一个元素

print "Element : $arr[0]"; # throws error "Global symbol "@arr" requires explicit package name at ..."

【问题讨论】:

    标签: arrays perl mason


    【解决方案1】:

    我不熟悉 Perl Mason,但似乎 getArray() 确实 返回一个数组。它可能会返回一个数组引用。我认为这就是您将其分配给标量变量 $arr 而不是 @arr 的原因;

    您可以使用Data::Dumper 确认这一点

    use Data::Dumper;
    print Dumper $arr;
    

    ref

    if (ref($r) eq "ARRAY")
    

    如果它确实是一个数组引用,您可以像这样访问第一个元素

    $arr->[0];
    

    打印这样的数组:

    print "Array : @$arr";
    

    并像这样获得它的大小

    my $size = scalar @$arr;
    

    【讨论】:

      【解决方案2】:

      您的$arr 是一个数组引用。您需要使用@{ … } 运算符取消引用它:@{ $arr } 或简写@$arr

      my $arr = getArray();
      print "Array : @$arr";
      my $size = scalar @$arr;
      print "Size : $size";
      

      要访问一个元素:${ $arr }[0] 或简写 $$arr[0]$arr->[0],应该首选最后一种形式。

      要了解有关 Perl 参考的更多信息,请阅读perldoc perlreftut

      【讨论】:

        猜你喜欢
        • 2017-11-22
        • 2014-11-14
        • 2016-07-11
        • 1970-01-01
        • 2020-10-16
        • 2013-06-24
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多