На самом деле это продолжение этой темы: 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 ()» где-нибудь в функцию сортировки?
cmp
и<=>
. - person Dave Cross   schedule 31.10.2011