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