Сортировать ключи хэша вложенного хэша - PullRequest
2 голосов
/ 09 января 2012

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

   $hash{key1}->{a} = 1;
   $hash{key1}->{b} = 3;

   $hash{key2}->{a} = 4;
   $hash{key2}->{b} = 7;

   $hash{key3}->{a} = 2;
   $hash{key3}->{b} = 5;

Как отсортировать ключи этого хэша по значению ключа a. Например, сортировка вышеуказанного хэша в порядке возрастания чисел по значениям ключа a даст: key1, key3, key2.

1 Ответ

4 голосов
/ 09 января 2012

Perl не имеет представления о отсортированном хэше, вам придется «сортировать» ваши ключи в цикле foreach:

#!/usr/bin/perl -W
use strict;

my %hash = ();

$hash{key1}->{a} = 1;
$hash{key1}->{b} = 3;

$hash{key2}->{a} = 4;
$hash{key2}->{b} = 7;

$hash{key3}->{a} = 2;
$hash{key3}->{b} = 5;

print "$_\n" foreach sort {$hash{$a}->{a} <=> $hash{$b}->{a}} keys %hash;

В качестве альтернативы, вы можете поместить результат sort вмассив и цикл в этом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...