perl - 比较版本而不使用版本 CPAN 模块
问题描述
假设我有 2 个版本变量:
$one = "1.2.3"
$two = "1.2.4"
如何比较这两个版本变量的版本是否匹配或一>二或一<二?
请注意,我有一个只读系统,无法添加任何 Perl 模块。因此我不能添加version
Perl 模块。
解决方案
对于您发布的字符串,只要每个组件小于 10 ,标准字符串比较运算符(cmp
、、等)就可以使用。lt
对于您发布的字符串,如果您首先使用转换它们,只要每个组件小于 2 32,标准字符串比较运算符(cmp
、等)就可以工作。lt
pack('N*', split(/\./, $v))
但这不适用于 Perl 世界中常见的所有版本。如果这是您必须处理的版本,请使用版本模块。(这不需要从 CPAN 安装任何东西,因此可以满足您的要求。)
my $v1 = version->parse($one);
my $v2 = version->parse($two);
创建的对象覆盖数字和字符串比较运算符,以便它们可用于比较对象。
推荐阅读
- android - 如何在 Android 中替换 Google Place 自动完成“未找到”图片
- python - Fritz Box - 外拨电话
- javascript - Javascript获取嵌套数组值
- javascript - 如何在承诺上运行 forEach?
- r - 计算分组变量的总体标准差
- matrix - iOS Metal 如何使用下标访问 3x3 矩阵的元素?
- swift - AX 查找问题 - 错误代码:1100 Permission Denied portName
- javascript - DNA配对挑战
- python - /social/complete/facebook/ 处的 social_django TypeError 需要一个类似字节的对象,而不是“元组”
- flutter - 如何为flutter应用程序中的所有对话框设置barrierColor?