my @luhnmap_1 = (0,2,4,6,8,1,3,5,7,9); my @luhnmap_2 = (); for my $x (0..9) { for my $y (0..9) { @luhnmap_2[$y*10+$x]=$luhnmap_1[$y]+$x; } } sub LUHN10 { my $num = shift; my $sum = 0; while ($str = substr $num, -2, 2, "") { $sum+=$bigmap[$str]; } return $sum % 10 ? 0 : 1; }