perl中的二维数组排序解决方法

perl中的二维数组排序
#!/usr/bin/perl
use Encode;
@ax=( [60,90,80,75,65],             #语文科目成绩
      [wang, LI,zhang,ki,huang] ,      #学生姓名
      [75,95,65,85,80] ,             #英文成绩
      [75,95,65,100,99],               #数学成绩 ,假定所有的姓名和成绩都不相同
  
);
#sort{}ax;      #我想按照数学成绩排顺序


for $i (0..$#ax){
       for $x (0..$#{$ax[$i]})  {
       print "$ax[$i][$x]\t";

}
print  "\n"      
};
    #我想按照数学成绩排序,请高手指点#  
perl 排顺

------解决方案--------------------
@ax=( [60,90,80,75,65],
      [wang, LI,zhang,ki,huang],
      [75,95,65,85,80],
      [75,95,65,100,99],
);

sub sort_by_math {
$sid = @_;
$i = 0;
@bx = map {[$i++, $_]} @{@ax[$sid]};
@cx = sort {$a->[1] <=> $b->[1]} @bx;
@dx = map {$_->[0]} @cx;
for $x (@ax) {
print "$x->[$_]\t" for @dx;
print "\n";
}
};

sort_by_math(3);

------解决方案--------------------
@ax=( [60,90,80,75,65],
      [wang, LI,zhang,ki,huang],
      [75,95,65,85,80],
      [75,95,65,100,99],
);

sub sort_by_math {
$sid = shift;
$i = 0;
@bx = map {[$i++, $_]} @{@ax[$sid]};
@cx = sort {$a->[1] <=> $b->[1]} @bx;