Почему Perl не "сортирует" эти хэш-ключи в числовом порядке?
#!/usr/bin/perl
use strict;
use warnings;
my %hash;
foreach ( 1 .. 10 ) {
$hash{$_} = $_;
}
foreach ( sort(keys %hash) ) {
print $_ . ": " . "$hash{$_}" . "n" ;
}
когда я выполняю приведенный выше код, результат выглядит следующим образом:
1: 1 10: 10 2: 2 3: 3 4: 4 5: 5 6: 6 7: 7 8: 8 9: 9
Я ожидаю, что" 10: 10 " будет последним, который будет напечатан. Мне просто нужно, чтобы кто-то объяснил, почему Perl дает мне сюрприз в этом случае.
2 ответов
sort
всегда по умолчанию для сравнения строк.
Если вы хотите числовую сортировку, вы должны быть явными.
sort {$a <=> $b} (keys %hash)