我怎么可以创建多层面阵列在Perl?
-
11-07-2019 - |
题
我是一位新Perl,但这里是我想要做的:
my @array2d;
while(<FILE>){
push(@array2d[$i], $_);
}
它没有汇编以来 @array2d[$i]
是不是一个阵列,但标的价值。
我应该怎么声明@array2d作为一系列阵?
当然,我不知道有多少行,我有。
解决方案
要使得数组的数组,或者更准确arrayrefs的阵列,尝试是这样的:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
有推压值到用于你一个解除引用的数组引用。您应该能够访问一个条目是这样的:
print $array[3][2];
其他提示
更改 “推” 行这样的:
push(@{$array2d[$i]}, $_);
您正做出$ array2d [$ i]发表的由@ {}包围它的阵列...然后,您可以推元件到该阵列数组引用的
有真的之间你写的并没有什么区别的:
@{$array2d[$i]} = <FILE>;
我只能假设你通过文件迭代。
要避免将计数器的轨道,你可以这样做:
...
push @array2d, [ <FILE> ];
...
这表示1)创建为空数组的引用,2)存储文件中的所有行,3)把它压@array2d
。
另一种简单的方法是使用一个哈希表,并使用两个数组索引,使散列键:
$two_dimensional_array{"$i $j"} = $val;
如果你只是想将文件存储在数组中,你也可以做到这一点:
fopen(FILE,"<somefile.txt");
@array = <FILE>;
close (FILE);
不隶属于 StackOverflow