程序不太了解,有没有达人帮小弟解释一下~~

程序不太了解,有没有达人帮小弟解释一下~~

程序不太了解,有没有达人帮小弟解释一下~~
#!/usr/local/bin/perl

my @array=(5,7,1,6,40);
print "@array\n";
my $prank=&Rank(\@array);
my @rank;
for(my $i=0;$i<=$#array;$i++){
#print "$array[$i] $prank->[$i]\n";
push @rank,$prank->[$i];
}
print "@rank\n";

sub Rank($){
#input
my ($parray)= @_;

#output
my @Rank;

#local
#说明:sort是按字母顺序排序,如下写法才是按数字大小排序
my @sortarray=reverse sort {$a <=> $b }(@{$parray});
#my @sortarray=reverse @{$parray};
#my @sortarray=sort @{$parray};
print "@sortarray\n";
for(my $i=0;$i<=$#{$parray};$i++){
print "$parray->[$i]\n";
for(my $j=0;$j<=$#sortarray;$j++){
if($parray->[$i] eq $sortarray[$j]){
$Rank[$i]=$j+1;
last;
}
}
}

return (\@Rank);
}
运行结果
运行结果是:
5 7 1 6 40
40 7 6 5 1
5
7
1
6
40
4 2 5 3 1
谁帮我解释一下为什么
你期望的是什么.
期望....
这几个都是测试程序,我只想知道他们是用来测试什么,涉及到哪些知识.
还有,程序的结果最后一行是怎么得来的,不是很明白
这个程序的最后一行如何得.
这个程序的最后一行如何得来的?
象在用Java写程序
程序也好理解,意思大概是这样:
过程 Rank 实现对一个数字数组的逆排序,打印出排序后数组的各元素,然后找出原数组在新数组的位置并以数组形式返回。
4 2 5 3 1 的意思是原数组的第1个元素排序后为新数组的第4个元素,2->2, 3->5, 4->3, 5->1。

就是程序太罗嗦了,没有多少Perl的味道,呵呵。
哇 谢谢 高手哦~.