- 论坛徽章:
- 0
|
一个hash
my %hashNames ;
$hashNames{'Sharon Basque-Dion'} = 1;
$hashNames{'Jean-Pascal Conteau'} = 42;
$hashNames{'Angus OHare'} = 4;
$hashNames{'Bally Waltson'} = 6;
我想按照值从小到大排出名字来,有什么好方法?
我的方法是这样的,还不太好,想请教下还有没有更好的方法:
先把hash搞在这样的数组:
my @test = ('46:Sharon Basque-Dion', '42:Jean-Pascal Conteau', '4:Angus OHare', '6:Bally Waltson');
再给数组按数值排序
my @szName = sort {$a <=> $b} @test;
for(my $i=0; $i<@szName; $i++){
print $szName[$i] . "\n";
}
虽然会报错,但也能排出正确的结果来
Argument "46:Sharon Basque-Dion" isn't numeric in sort at testmail.cgi line 15.
Argument "42:Jean-Pascal Conteau" isn't numeric in sort at testmail.cgi line 15.
Argument "4:Angus OHare" isn't numeric in sort at testmail.cgi line 15.
Argument "6:Bally Waltson" isn't numeric in sort at testmail.cgi line 15.
4:Angus OHare
6:Bally Waltson
42:Jean-Pascal Conteau
46:Sharon Basque-Dion
还有没有更好的方法?
谢了! |
|