我对 Perl 有点陌生,但这是我想做的:
my @array2d;
while(<FILE>){
push(@array2d[$i], $_);
}
它不能编译,因为@array2d[$i]
它不是数组而是标量值。
我应该如何将@array2d 声明为数组数组?
当然,我不知道我有多少行。
我对 Perl 有点陌生,但这是我想做的:
my @array2d;
while(<FILE>){
push(@array2d[$i], $_);
}
它不能编译,因为@array2d[$i]
它不是数组而是标量值。
我应该如何将@array2d 声明为数组数组?
当然,我不知道我有多少行。
要创建数组数组,或者更准确地说是数组引用数组,请尝试以下操作:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
它为您将值推送到取消引用的 arrayref 上。您应该能够访问这样的条目:
print $array[3][2];
将您的“推”线更改为:
push(@{$array2d[$i]}, $_);
您基本上是通过将 $array2d[$i] 包围在 @{}... 周围来制作一个数组...然后您可以将元素推送到这个数组引用数组上。
你写的和这个真的没有区别:
@{$array2d[$i]} = <FILE>;
我只能假设您正在遍历文件。
为避免跟踪计数器,您可以这样做:
...
push @array2d, [ <FILE> ];
...
也就是说 1)创建对空数组的引用,2)将所有行存储在 FILE 中,3)将其推送到@array2d
.
另一种简单的方法是使用哈希表并使用两个数组索引来制作哈希键:
$two_dimensional_array{"$i $j"} = $val;
如果您只是想将文件存储在数组中,您也可以这样做:
fopen(FILE,"<somefile.txt");
@array = <FILE>;
close (FILE);