如果我有一个2D数组,怎样才能访问循环内的整个子数组?现在我有
foreach my $row(@data){
foreach my $ind(@$row){
#perform operations on specific index
}
}
但理想情况下我正在寻找符合
的内容foreach my $row(@data){
#read row data like $row[0], which if it has the data I'm looking for
#I can go ahead and access $row[3] while in the same row..
}
我对Perl相当新,所以可能只是不明白一些东西,但是当我试图以我想要的方式使用它时,我保持“全局符号”@row“需要显式包名”。
答案 0 :(得分:6)
你很亲密。 $row
是数组引用,您可以使用deference运算符->[...]
访问其元素:
foreach my $row (@data) {
if ($row->[0] == 42) { ... }
$row[0]
是指数组变量@row
的一个元素,它与Global symbol ...
完全不同(可能是未定义的 - 因此是$row
错误消息)变量
答案 1 :(得分:3)
如果代码示例中的$row
应该是子数组或数组引用,则必须使用间接表示法来访问其元素,例如$row->[0]
,{{1等等。
错误的原因是因为$row->[1]
实际上意味着存在数组$row[0]
,这可能不在您的脚本中。
答案 2 :(得分:1)
你也可以试试这个......
my @ary = ( [12,13,14,15],
[57,58,59,60,61,101],
[67,68,69],
[77,78,79,80,81,301,302,303]);
for (my $f = 0 ; $f < @ary ; $f++) {
for (my $s = 0 ; $s < @{$ary[$f]} ; $s++ ) {
print "$f , $s , $ary[$f][$s]\n";
}
print "\n";
}