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" ;
}