sub luhn { my $total = 0; for my $i ( 0 .. length $_[0] ) { my $d = substr $_[0], $i, 1 ); if( $i & 1 ) { $d *= 2; $s -=9 if $d > 10; } $total += $d; } $total *= 9; return substr $total, -1 }