2013-05-29 2 views
-4

У меня есть массив ссылок на хеши:сортировка хэш в Perl

@array=($ref1,$ref2,$ref3); 

Каждой точка рефов на хэш с теми же ключами, но разными значениями. Мне нужно сортировать хеши в соответствии со значениями KEY (один из ключей в хэшах). Позже я должен распечатать значения всех ключей всех хэшей, но отсортирован.

Пример:

%h1=(KEY=>1,name=>John,sport=>football); 
%h2=(KEY=>52,name=>Kate,sport=>football); 
%h3=(KEY=>7,name=>April,sport=>basketball); 

В результате я хочу, чтобы получить его в следующем порядке:

% h1,% h3,% h2

+4

Ну, вы прочитали документацию для 'sort'? Что вы пробовали? – TLP

ответ

0

Пример:

use strict; 
use warnings; 

my %h1=(KEY=>1,name=>'John',sport=>'football'); 
my %h2=(KEY=>52,name=>'Kate',sport=>'football'); 
my %h3=(KEY=>7,name=>'April',sport=>'basketball'); 
my @array=(\%h1,\%h2,\%h3); 

for my $h (sort {$a->{KEY} <=> $b->{KEY} } @array) { 
    print join(",", map { "$_, $h->{$_}"} keys %$h), "\n"; 
} 

Выход

KEY, 1,name, John,sport, football 
KEY, 7,name, April,sport, basketball 
KEY, 52,name, Kate,sport, football 
Смежные вопросы