0

我是 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 ..."
4

2 回答 2

4

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

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

use Data::Dumper;
print Dumper $arr;

参考

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

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

$arr->[0];

像这样打印数组:

print "Array : @$arr";

得到它的大小是这样的:

my $size = scalar @$arr;
于 2014-04-03T17:52:29.313 回答
3

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

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

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

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

于 2014-04-03T17:51:03.470 回答