Perl比较版本号5.1< 5.10

时间:2013-11-14 09:25:27

标签: perl version

我在比较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"; }'

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

使用代码模块CPAN::Version

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

<强>输出:

OK

答案 2 :(得分:1)

我不确定我理解你想要实现的目标。 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;