Если вы действительно хотите использовать преобразование Шварца, вот способ сделать это:
#!/usr/bin/perl
use Data::Dump qw(dump);
my %hash = (k1 => [1, 2], k2 => [24, 5], k3 => [5, 1]);
foreach(
sort { $a->[1] <=> $b->[1] }
map { [$_, $hash{$_}->[1] ] } keys %hash) {
say $_->[0],' => ',dump$hash{$_->[0]};
}
выход:
k3 => [5, 1]
k1 => [1, 2]
k2 => [24, 5]
Примечание:
Я просто даю этот ответ в качестве примера преобразования Шварца
Но, как сказано в комментарии, в случае, описанном в вопросе, в этом нет необходимости, ST экономит затраты, когда перед сортировкой выполняются вычисления для каждого элемента массива. На заданный вопрос вычисление не требуется, поэтому не используйте здесь ST.