Regex 用perl检查版本
我正在编写检查版本的子例程,但有些人认为我没有得到正确的输出 如果版本1<版本2,则为-1 如果版本1=版本2,则为0 如果版本1>版本2,则为1 不知道为什么我没有得到正确的结果Regex 用perl检查版本,regex,perl,version,Regex,Perl,Version,我正在编写检查版本的子例程,但有些人认为我没有得到正确的输出 如果版本1版本2,则为1 不知道为什么我没有得到正确的结果 sub checkVersion { my $var1 = shift; my $var2 = shift; my @var1_seg = split (/./, $var1); my @var2_seg = split (/./, $var2); for( my $i = 0; $i &
sub checkVersion
{
my $var1 = shift;
my $var2 = shift;
my @var1_seg = split (/./, $var1);
my @var2_seg = split (/./, $var2);
for( my $i = 0; $i < @var1_seg; $i++ )
{
if( $var1_seg[$i] < $var2_seg[$i] )
{
return -1;
}
elsif( $var1_seg[$i] > $var2_seg[$i] )
{
return 1;
}
}
return 0;
}
子检查版本
{
我的$var1=班次;
我的$var2=班次;
my@var1_seg=split(/。/,$var1);
my@var2_seg=split(/。/,$var2);
对于(my$i=0;$i<@var1_seg;$i++)
{
如果($var1_seg[$i]<$var2_seg[$i])
{
返回-1;
}
elsif($var1_seg[$i]>var2_seg[$i])
{
返回1;
}
}
返回0;
}
这不应该:
my @var1_seg = split (/./, $v1);
my @var2_seg = split (/./, $v2);
是这样的:
my @var1_seg = split (/./, $var1);
my @var2_seg = split (/./, $var2);
作为一般性评论,请始终“严格使用;”在程序的顶部,以避免此类问题。这不应该:
my @var1_seg = split (/./, $v1);
my @var2_seg = split (/./, $v2);
是这样的:
my @var1_seg = split (/./, $var1);
my @var2_seg = split (/./, $var2);
作为一般性评论,请始终“严格使用;”请注意,您需要使用split对点进行转义,因为它被认为是正则表达式中的一个特殊字符。 取而代之的是,使用模块可以非常轻松地比较版本号:
use strict;
use warnings;
use version;
use feature 'say';
say checkVersion('5.10.0', '5.14.0'); # Returns -1
say checkVersion('5.10.0', '5.10.0'); # Returns 0
say checkVersion('5.14.0', '5.10.0'); # Returns 1
sub checkVersion {
my $var1 = shift;
my $var2 = shift;
return version->parse($var1) <=> version->parse($var2);
}
使用严格;
使用警告;
使用版本;
使用特征“说”;
说checkVersion('5.10.0','5.14.0');#返回-1
说checkVersion('5.10.0','5.10.0');#返回0
说checkVersion('5.14.0','5.10.0');#返回1
子检查版本{
我的$var1=班次;
我的$var2=班次;
返回版本->解析($var1)版本->解析($var2);
}
注意,需要使用split转义点
,因为它被认为是正则表达式中的特殊字符。
取而代之的是,使用模块可以非常轻松地比较版本号:
use strict;
use warnings;
use version;
use feature 'say';
say checkVersion('5.10.0', '5.14.0'); # Returns -1
say checkVersion('5.10.0', '5.10.0'); # Returns 0
say checkVersion('5.14.0', '5.10.0'); # Returns 1
sub checkVersion {
my $var1 = shift;
my $var2 = shift;
return version->parse($var1) <=> version->parse($var2);
}
使用严格;
使用警告;
使用版本;
使用特征“说”;
说checkVersion('5.10.0','5.14.0');#返回-1
说checkVersion('5.10.0','5.10.0');#返回0
说checkVersion('5.14.0','5.10.0');#返回1
子检查版本{
我的$var1=班次;
我的$var2=班次;
返回版本->解析($var1)版本->解析($var2);
}
改用。当您处理版本时,此模块非常有用。请改用。当您处理版本时,此模块非常有用。这些只是var1和var2,这是有问题的打字错误,而不是在实际脚本中。这些只是var1和var2,这是有问题的打字错误,而不是在实际脚本中。是否存在逻辑错误?我觉得logicInput是4.0和3.0.2,我认为我没有检查主版本是否相同,次版本是否小于或大于,或者只是return version->parse($var1)version->parse($var2)代码>是否存在任何逻辑错误?我觉得logicInput是4.0和3.0.2,我认为我没有检查主版本是否相同,次版本是否小于或大于,或者只是return version->parse($var1)version->parse($var2)代码>