我应该使用 Perl 比较一些应用程序的版本。问题是,每个版本的最后一部分都可以由数字以及按字母顺序对应的字母设置,即:
12.3a == 12.31
12.3b == 12.32
12.3c <> 12.34
我应该使用 Perl 比较一些应用程序的版本。问题是,每个版本的最后一部分都可以由数字以及按字母顺序对应的字母设置,即:
12.3a == 12.31
12.3b == 12.32
12.3c <> 12.34
这是一个奇怪的规格。规范化可能是要走的路。
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。让我知道这是否是错误的。
您可以尝试Sort::Versions。从模块描述:
Sort::Versions 允许对混合的非数字和数字字符串进行轻松排序,例如许多共享库系统和修订控制包使用的“版本号”。如果您尝试处理共享库,这将非常有用。它还可以应用于在文本中散布可变宽度数字字段的应用程序。毫无疑问,可以找到其他应用程序。
你看过 David Wheeler 的SemVer吗?