Как отсортировать значения хэша в алфавитном порядке ?
есть такой хеш %hash1=(2,Nora,4,Bora,3,Cora,1,Lora)
Требуется его отсортировать по именам (Bora,Cora,Lora,Nora) и привести к виду:
%hash2=(4,Bora,3,Cora,1,Lora,2,Nora);
>Как отсортировать значения хэша в алфавитном порядке ?Порядок хранения элементов в хэше зависит исключительно от положения звезд на небе.
Если нужно вывести в отсортированном виде то подойдет примерно следующее:my @sorted_keys = sort ($hash1{$a} cmp $hash1{$b}) keys %hash1;
В @sorted_keys будет (4,3,1,2);
Если важно именно хранение в отсортированном виде то см. Tie::SortHash, правда я слабо себе представляю зачем такое может понадобиться.
>правда я слабо себе представляю зачем такое может понадобиться.
В хэше находятся имена пользователей, которые нужно вывести в отчет в алфавитном порядке.
>>правда я слабо себе представляю зачем такое может понадобиться.
>В хэше находятся имена пользователей, которые нужно вывести в отчет в алфавитном
>порядке.
ну и используй:
print "$_ = $hash1{$_}" for(sort {$hash1{$a} cmp $hash1{$b}} keys %hash1);
>print "$_ = $hash1{$_}" for(sort {$hash1{$a} cmp $hash1{$b}} keys %hash1);
Так работает, спасибо.
А как сделать тоже самое для сортировки по значениям ключей ?
>
>>print "$_ = $hash1{$_}" for(sort {$hash1{$a} cmp $hash1{$b}} keys %hash1);
>Так работает, спасибо.
>А как сделать тоже самое для сортировки по значениям ключей ?
Почитать чего-нить по перлу, подумать...print "$_ = $hash1{$_}" for(sort keys %hash1);
Спасибо, все работает.
>Спасибо, все работает.
как сделать, что-бы при выводе значений хэша выводился порядковый номер значения:%hash1=("name","Tora","second name","Smith");
Tora чтобы была 1, Smith -2 и т.д.
>>Спасибо, все работает.
>как сделать, что-бы при выводе значений хэша выводился порядковый номер значения:
>
>%hash1=("name","Tora","second name","Smith");
>Tora чтобы была 1, Smith -2 и т.д.
отказаться от хеша испаользовать массив, все проблемы решаются