LINUX.ORG.RU

Perl, soting


0

0

Прошу прощения за примитивный вопрос, сижу перл изучаю, не пойму как сделать сортировку списка хэш массивов:

Вот так заполняю:

...
my %arr;

$player = {
"Pos" => $pos,
"Ali" => $ali,
"Score" => $score
};

...
$arr{$name} = $player;
...

Мне надо вывести список отсортированый по Score. Help, please.

anonymous

Re: Perl, soting

Вернее, не списка хэш-мнассивов, а хэш-массива хэш-массивов.

Блин, всю голову с этим перлом сломать можно...

anonymous ()

Re: Perl, soting

1. давать хешу название %arr - до добра не доведет.

2.
$pet = { score => 500 };                                                                            
$tet = { score => 700 };                                                                            
$det = { score => 900 };                                                                            
                                                                                                    
my %players = ( pet => $pet, tet => $tet, det => $det );                                            
                                                                                                    
#                                                                                                   
# " map => sort => map " алгоритм нужно читать снизу вверх.                                         
#                                                                                                   
print join "\n" =>                                                                                  
                                                                                                    
        map  { $_->[0] }             # оставляем только имя игрока                                  
                                                                                                    
        sort {$b->[1] cmp $a->[1]}  # выполняем сортировку                                          
                                                                                                    
        map  { [$_, $players{$_}->{score}] }  # создаем анонимный массив, состоящий                 
                                              # из имени игрока и суммы его очков.                  
                                                                                                    
        keys %players;               # список игроков                                               
                                                                                                    
print "\n";

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.