sub validate { - my ($number) = @_; + my ($number, $param) = @_; my ($i, $sum, $weight); return 0 if $number =~ /[^\d\s]/; $number =~ s/\D//g; return 0 unless length($number) >= 9 && 0+$number; + return 0 unless length($number) >= 13 && !(defined $par am->{ISOstrict} && $param->{ISOstrict}); for ($i = 0; $i < length($number) - 1; $i++) { $weight = substr($number, -1 * ($i + 2), 1) * (2 - ($i % 2)); $sum += (($weight < 10) ? $weight : ($weight - 9)); } return 1 if substr($number, -1) == (10 - $sum % 10) % 10; return 0; }