Perl:版本-> 解析无效输入

Perl : version->parse with invalid input

我从终端命令的输出中读取了一系列版本号, 不幸的是,其中一些无效 (5.2.5_076_06-beta) 无法与 version::parse 一起使用,我有输出 "Invalid version format (version required) at get_version.pl line 8." 这对应于包含 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;
}

version module is for parsing Perl module versions, which have a very specific format. For your task of sorting arbitrary non-Perl versions, try Sort::Versions.

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