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;
我从终端命令的输出中读取了一系列版本号, 不幸的是,其中一些无效 (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;