|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Wagner 2:5020/400 29 Oct 2002 22:24:14 To : "Nurlan Mukhanov" Subject : Re: 'sort values %hash' не работает -------------------------------------------------------------------------------- Nurlan Mukhanov <nurlan@otdyh.kz> wrote: NM> Hello, All! NM> Есть такой вот простой код: NM> ============================================ NM> foreach (sort keys %hash) { NM> next unless $hash{$_}; NM> print pack("A30",$_)."=> \"".pack("A30",$hash{$_})."\",\n"; NM> print QQQ "'".pack("A30","$_'")."=> \"$hash{$_}\",\n"; NM> $i++; NM> }; NM> ============================================ NM> Все работет прекрасно! Hо почему-то "sort values %hash" не работает вообще. Потому что использовать значения в качестве индексов - бессмысленно. Что делает конструция sort keys %hash, вернее sort(keys(%hash)) - она сначала получает список ключей хэша, потом подвергает их сортировке. В результате переменная цикла ($_) пробегает значения всех ключей по очереди. А что делает sort(values(%hash)) - возвращает упорядоченный список значений. Их ассоциация с ключами уже потеряна. Тебе нужно сортировать ключи в порядке возрастания значений, а не сортировать значения sort {$hash{$a} cmp $hash{$b} keys %hash -- Hу какой я, к черту, линуксоид? У меня даже Жигули на солярке! --- ifmail v.2.15dev5 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/15178c93e188d.html, оценка из 5, голосов 10
|