in reply to Comparing revision numbers
The problem is in line 42 of your code.
(Or phrased differently, if you showed your code, it would be much easier to help you).
Update:
Running your code with
use strict; use warnings; # your code here... print rev_compare('1.3', '*');
Results in an error:
Too many arguments for main::rev_compare at foo.pl line 54, near "'*') +" Execution of foo.pl aborted due to compilation errors.
Removing the () after the sub rev_compare fixes this. Then I get
Line 39 is if ($section_major_number == $main_minor_number)Argument "" isn't numeric in numeric eq (==) at foo.pl line 39. 0
Which reveals a problem of your code: you don't have sane handling for when the numbers don't contain a dot. Also you only check the first argument for being an asterisk, not the second.
I'd suggest this code instead:
sub rev_compare { my $section = shift; my $main = shift; return 1 if $section eq '*' or $main eq '*'; my @section = split /\./, $section; my @main = split /\./, $main; return ($section[0] == $main[0]) && (($section[1] eq '*' && $main[1] eq '*') || $section[1] == $main[1]); }
I haven't tested it with all values, but it should handle * as the value of the minor version number just fine
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Comparing revision numbers
by zek152 (Pilgrim) on Jul 12, 2010 at 18:09 UTC |