perl复杂数据结构
数组的数组
定义
方法一
my @person1 = ("zdd", 30, "man") ;
my @person2 = ("autumn", 27, "woman") ;
my @persons =(\@person1, \@person2) ;
方法二
my @persons =(
["zdd", 30, "man"],
["autumn", 27, "woman"]
) ;
方法三 匿名数组,这个方法需要用特殊的访问方法。
my $persons =[
["zdd", 30, "man"],
["autumn", 27, "woman"]
] ;
访问
按行访问
# Print by row
for my $row(@persons){
print @$row, "\n" ;
}
按下标访问
# Print by index
for my $row(0 .. $#persons){
for my $col(0 .. $#{$persons[$row]}){
print $persons[$row][$col] ;
}
print "\n" ;
}
注:如果@array是一个数组,那么$#array表示数组中最后一个元素的下标,也即数组元素个数-1,perl中数组下标也是从0开始的。注意第二个for中列下标的最大值写法,因为$persons[$row]已经是一个一维数组了,所以要在外层加上$#{}才是其最大下标。
匿名二维数组的访问
按行访问
for my $row(@{$persons}){
print @$row, "\n" ;
}
按下标访问
for my $row(0 .. $#{$persons}){
for my $col(0 .. $#{$persons->[$row]}){
print $persons->[$row][$col] ;
}
print "\n" ;
}