Это продолжение этой темы:
Perl: числовая сортировка массивов в хэше
Я не смог отредактировать исходный вопрос, потому что мой текущий код немного отличается, поэтому я просто задаю это как другой вопрос.
Хорошо, после использования преобразования Шварца, у меня есть это:
my @mylines =("0.899 0.92 cat",
"9.999 0.001 dog",
"-0.52 0.3 humpty",
"13.52 0.09 bumbo",
"-1.52 0.98 nanny",
"3.52 0.34 lala");
my @sorted = map { join ' ', @$_ }
reverse sort { $a->[0] cmp $b->[0] or $a->[1] <=> $b->[1] }
map { [ split ] } (@mylines);
print "$_\n" for @sorted;
Я ожидаю, что выходные данные будут отсортированы сначала по первому столбцу, а затем по второму, но получается так:
9.999 0.001 dog
3.52 0.34 lala
13.52 0.09 bumbo
0.899 0.92 cat
-1.52 0.98 nanny
-0.52 0.3 humpty
Полагаю, это потому, что он выполняет сортировку символов ... но мне нужно, чтобы она была отсортирована по численности. Нужно ли помещать java-подобный parseInt () где-нибудь в функцию сортировки?