我是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 ..."
我不熟悉Perl Mason,但似乎getArray()不返回数组。它可能正在返回数组引用。我认为这就是您将其分配给标量变量$arr而不是@arr的原因;
您可以使用 Data::D umper 进行确认
use Data::Dumper;
print Dumper $arr;
或参考。
if (ref($r) eq "ARRAY")
如果它确实是一个数组引用,你可以像这样访问第一个元素:
$arr->[0];
像这样打印数组:
print "Array : @$arr";
并像这样获取其大小:
my $size = scalar @$arr;
您的$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
。