sprintf looks like a good solution.
As I am not very familiar with pack I thought I'd try using it in this case, and here is what I got. Note that this code is tested but it is by no means authoritative, feel free to point my mistakes.
#!/usr/bin/perl -w use strict; while( <DATA>) { chomp; my( $v1, $expected_res, $v2)= split /\s+/; my $pv1= pack( 'I3', split( /\./, $v1)); my $pv2= pack( 'I3', split( /\./, $v2)); my $res; if( $pv1 gt $pv2) { $res= '>'; } elsif( $pv1 lt $pv2) { $res= '<'; } elsif( $pv1 eq $pv2) { $res= '='; } if( $res eq $expected_res) { print "ok $v1 $res $v2\n"; } else { print "NOK $v1 $res $v2 should be $v +1 $expected_res $v2\n"; } } __DATA__ 1.2 < 1.3 1.3 > 1.2 1.2.1 > 1.2 1.2.1 < 1.3 1.2.1 < 1.2.2 1.2.2 > 1.2.1 1.2.10 > 1.2.2 1.2.2 < 1.2.10 1.2 = 1.2 1.2.1 = 1.2.1 1.2.10 = 1.2.10
In reply to Re: Module version checking flaw?
by mirod
in thread Module version checking flaw?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |