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
In reply to Re: Comparing revision numbers
by moritz
in thread Comparing revision numbers
by zek152
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |