[*закрыто*] вопрос про сортировку чисел

Fake_queen

при сортировке по вычисляемому полю
 
 
@a=<STDIN>;
@sorted = map {$_->[0]}
sort {$a->[1] cmp $b->[1]
||
$b->[2] cmp $a->[2]
||
$a->[3] cmp $b->[3]
||
$a->[4] cmp $b->[4]}
map {[$_, (split / /)[0,1,2,3]]}
@a;
print @sorted, "\n";
 

одно из полей ([3] с цифрами) сортируется не так
     234
     2100
     3400
а так
     2100
     234
     3400
как исправить?

artimon

perldoc perlop
cmp сравнивает строки.
Замени cmp на <=>

Fake_queen

что-то не сработало
Оставить комментарий
Имя или ник:
Комментарий: