#!/usr/bin/perl -w
use strict;
sub byVersion;
my ($v1,$v2)=("1.1.1.1","1.1.1.2");
print "$v1 is equal to $v2\n" if (byVersion($v1,$v2)== 0);
print "$v1 is greater than $v2\n" if (byVersion($v1,$v2)== 1);
print "$v1 is less than $v2\n" if (byVersion($v1,$v2)==-1);
sub byVersion
{
my @First=split /\./,$a||shift;
my @Second=split /\./,$b||shift;
foreach(0..(($#First>$#Second)?$#Second:$#First))
{
next if ($First[$_] eq $Second[$_]);
return (($First[$_]=~/^\d+$/o)&&($Second[$_]=~/^\d+$/o))?($First[$_]<=>$Second[$_]):($First[$_] cmp $Second[$_]);
}
return ($#First<=>$#Second);
}
####
#!/usr/bin/perl -w
use strict;
sub byVersion;
my ($v1,$v2)=("1.1.1.1","1.1.1.2");
#-----------------------------
my @row=(1,2,3,4);
my @nrow=sort byVersion @row;
print "@nrow\n";
#-----------------------------
print "$v1 is equal to $v2\n" if (byVersion($v1,$v2)== 0);
print "$v1 is greater than $v2\n" if (byVersion($v1,$v2)== 1);
print "$v1 is less than $v2\n" if (byVersion($v1,$v2)==-1);
sub byVersion
{
my @First=split /\./,$a||shift;
my @Second=split /\./,$b||shift;
foreach(0..(($#First>$#Second)?$#Second:$#First))
{
next if ($First[$_] eq $Second[$_]);
return (($First[$_]=~/^\d+$/o)&&($Second[$_]=~/^\d+$/o))?($First[$_]<=>$Second[$_]):($First[$_] cmp $Second[$_]);
}
return ($#First<=>$#Second);
}
####
my ($val1,$val2)=("1.1.2","1.1.3");
print "Greater than\n" if ((sort byVersion ($val1,$val2))[-1] eq $val1);