我应该使用 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/