我有以下代码来排序版本号:
chomp(my @versions = <>);
my @sorted_versions = sort {
version->parse( $a ) cmp version->parse( $b )
} @versions;
print "$_\n" for @sorted_versions;
如果我管道以下文件:
cat version_file
15.8
15.8.1
输出结果为:
15.8.1
15.8
为什么呢?应该是:
15.8
15.8.1
我检查了cmp
在运行脚本时返回1
答案 0 :(得分:4)
虚线十进制:裸v字符串(v1.2.3)和带有多个小数点和前导'v'(“v1.2.3”)的字符串;注意你可以在技术上使用带有前导v和只有一个小数点的v-string或字符串(v1.2或“v1.2”),但你会混淆自己和其他人
问题是15.8
解析为v5.800.0
而15.8.1
变为v15.8.1
答案 1 :(得分:0)
您只需在版本前添加v
即可。
chomp(my @versions = <>);
my @sorted_versions = sort {
version->parse( "v$a" ) cmp version->parse( "v$b" )
} @versions;
print "$_\n" for @sorted_versions;