Ben*_*Ben 18 arrays perl multidimensional-array data-structures
我对Perl有点新意,但这就是我想做的事情:
my @array2d;
while(<FILE>){
push(@array2d[$i], $_);
}
Run Code Online (Sandbox Code Playgroud)
它不编译,因为@array2d[$i]它不是数组而是标量值.
我应该如何将@ array2d声明为数组数组?
当然,我不知道我有多少行.
gpo*_*ojd 27
要创建一个数组数组,或者更准确地说是一个arrayrefs数组,请尝试以下方法:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
Run Code Online (Sandbox Code Playgroud)
它会将值推送到解除引用的arrayref上.您应该能够访问这样的条目:
print $array[3][2];
Run Code Online (Sandbox Code Playgroud)
将您的"推送"行更改为:
push(@{$array2d[$i]}, $_);
Run Code Online (Sandbox Code Playgroud)
你基本上是通过@ {}围绕它来使$ array2d [$ i]成为一个数组......然后你可以将元素推送到这个数组引用数组中.