Perl 比较版本号 5.1 < 5.10



我在比较 2 个版本时遇到困难。如果我们有 5.1 和 5.10,那么 5.1 应该小于 5.10。我知道十进制应该读作 5.01 和 5.10。但是有没有办法使用 5.1 和 5.10 进行比较?

perl -e 'use warnings; use version; if (version->parse("5.1") < version->parse("5.10")) { print "ok"; }'

version 模块文档展示了如何执行此操作:

print version->declare('5.1')->numify;  # 5.00100
print version->declare('5.10')->numify; # 5.01000

使用代码模块 CPAN::Version :

use CPAN::Version;
say CPAN::Version->vlt("5.1","5.10") ? "OK" : "KO";      

输出:

OK

我不确定我是否理解您要实现的目标。Perl 有两个比较运算符,用于数字和字符串。它们都不能按照您想要的方式工作。如果你只是想避免使用version,你可以使用例如split

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my @v = qw(5.1 5.10);
sub by_version {
    my @a = split /./, $a;
    my @b = split /./, $b;
    $a[0] <=> $b[0] or $a[1] <=> $b[1];
}
say for sort by_version @v;

最新更新