perl - 我如何在 Perl 中比较字母及其对应的(按字母顺序排列的)数字?

标签 perl comparison operator-overloading versioning

我应该使用 Perl 比较一些应用程序的版本。问题是,每个版本的最后一部分都可以通过数字以及字母对应的字母来设置,即:

12.3a == 12.31
12.3b == 12.32
12.3c <> 12.34

我看到了 version module但它似乎只处理数字和下划线。
也许我应该使用 overload ? 最好和最优雅的解决方案是什么?

最佳答案

这是一个奇怪的规范。规范化可能是要走的路。

use version qw( qv );

sub normalise_version {
    my ($v) = @_;
    $v =~ s/([a-i])/ ord($1)-ord('a')+1 /eg;
    return qv("v$v");
}

normalise_version($v1) <=> normalise_version($v2)

同上12.3被认为小于12.31。如果那是错误的,请告诉我。

关于perl - 我如何在 Perl 中比较字母及其对应的(按字母顺序排列的)数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11904731/

相关文章:

c++ - undefined reference 和运算符 << 对我

perl - 如何在 Perl 中解决此警告

java - 比较两个 HTML 源代码并显示视觉差异

javascript - 递归深度比较

R ggpubr : add mean horizontal line & pair comparisons by group?

C++ - 无法重载赋值运算符

perl - Perl 代码有很好的混淆器吗?

perl - 仅当有完整行时,如何才能从 IO::Socket::INET 文件句柄中读取?

perl - 如何以编程方式获取有状态的 ssh shell session ?

c++ - 无法对匿名对象使用运算符<<