【发布时间】:2016-11-17 20:48:24
【问题描述】:
我一直在阅读有关如何在 Perl 中不能拥有数组数组的文章,因此我最终在数组引用方面苦苦挣扎,我想我知道如何从子例程返回数组。但是我不能让它在返回后打印整个数组。有人可以向我解释为什么或如何调试这个问题吗?真的很感激!
#!/usr/bin/perl
use strict;
use warnings;
#Subroutine to randomize the 2D Array:
sub randPattern {
my ($rand_ref) = @_;
my @RandBoard = @$rand_ref;
for (my $i = 0; $i <= $#RandBoard; $i++) {
for (my $j = 0; $j <= $#RandBoard ; $j++) {
$RandBoard[$i][$j] = 0 + int(rand(3 - 0));
print "$RandBoard[$i][$j] ";
}
print "\n";
}
return @RandBoard;
}
my @checkerArr = (
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0]
);
my ($randomizedArr_ref) = randPattern(\@checkerArr); #sending arrayy as reference
my @randomizedArr = @$randomizedArr_ref; #dereferencing the returned array
print "___________________\n";
foreach (@randomizedArr){
print "$_ "; }
print "\n";
输出是这样的:
1 1 1 1 1 0 2 1
1 0 0 0 2 2 0 1
2 1 1 2 1 2 0 1
1 2 0 2 0 1 0 1
1 2 1 2 0 0 1 0
2 1 0 1 0 0 0 2
2 2 0 0 0 2 0 0
1 1 1 0 0 1 1 1
___________________
1 1 1 1 1 0 2 1
如您所见,它只输出数组的第一行。
【问题讨论】: