Perl: версия-> анализ с неверным вводом - PullRequest
0 голосов
/ 11 марта 2020

У меня есть массив номеров версий, которые я прочитал из вывода команды терминала, к сожалению, некоторые из них недопустимы (5.2.5_076_06-beta) для использования с version :: parse, у меня есть вывести «Недопустимый формат версии (требуется версия) в строке 8 get_version.pl». это соответствует строке, содержащей version-> parse ($ test); и весь сценарий заканчивается. Как мне обойти это?

use version;

my $cmd  =  "ls -l /nfs/install/ | awk '{print \$9}'";
my @vers = `$cmd`;

foreach my $test ( @vers ) {
    try { 
        version->parse($test);
    }
    catch
    {
        my $index = 0;
        $index++ until $vers[$index] eq $test;
        print $vers[$index];
        splice(@vers, $index, 1);

    }
}

my @sorted_vers = sort { version->parse( $a ) <=> version->parse( $b ) } @vers;

foreach my $version (@sorted_vers)
{
        print $version;
}

1 Ответ

3 голосов
/ 11 марта 2020

Модуль version предназначен для анализа версий модуля Perl, которые имеют весьма специфический c формат . Для вашей задачи сортировки произвольных не Perl версий попробуйте Sort :: Versions .

use Sort::Versions;
my @sorted_vers = sort versioncmp @vers;
...