Почему порядок сортировки версий обратный? - PullRequest
0 голосов
/ 06 мая 2018

У меня есть следующий код для сортировки номеров версий:

chomp(my @versions = <>);  
my @sorted_versions = sort {  
                        version->parse( $a ) cmp version->parse( $b )
                    } @versions;  
print "$_\n" for @sorted_versions;  

Если я передам следующий файл:

cat version_file   
15.8  
15.8.1  

Вывод:

15.8.1  
15.8  

Почему? Это должно было быть:

15.8  
15.8.1  

Я проверил, что cmp возвращает 1 при запуске скрипта

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете просто добавить v перед вашей версией.

chomp(my @versions = <>);
my @sorted_versions = sort {
    version->parse( "v$a" ) cmp version->parse( "v$b" )
} @versions;
print "$_\n" for @sorted_versions;
0 голосов
/ 06 мая 2018

Документация для version содержит

Точечный-десятичный: пустые v-строки (v1.2.3) и строки с более чем одной десятичной точкой и начальным 'v' ("v1.2.3"); ПРИМЕЧАНИЕ: технически вы можете использовать v-строку или строки с начальным-v и только одной десятичной точкой (v1.2 или "v1.2"), но вы будете путать себя и других

Проблема в том, что 15.8 анализируется как v5.800.0, тогда как 15.8.1 становится v15.8.1

Подробнее об актуальности можно прочитать по адресу version::Internals

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...