use strict; use warnings; # your code here... print rev_compare('1.3', '*'); #### Too many arguments for main::rev_compare at foo.pl line 54, near "'*')" Execution of foo.pl aborted due to compilation errors. #### Argument "" isn't numeric in numeric eq (==) at foo.pl line 39. 0 #### if ($section_major_number == $main_minor_number) #### 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]); }