在perl梅森中打印阵列

时间:2014-04-03 17:45:26

标签: arrays perl mason

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

2 个答案:

答案 0 :(得分:4)

我不熟悉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;

答案 1 :(得分:3)

您的$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