L'algorithme de Luhn ou la formule de Luhn, aussi connu comme l’algorithme « module 10 » ou « mod 10 », en voici une implementation en Perl :
#!/usr/bin/perl -w use strict; sub check_num($) { my ($num) = @_; my @nums = split //, $num; my $size = scalar @nums; my $i = 0; my $some = 0; foreach my $n (reverse @nums) { my $tmp = $n * ( 1 + ($i++ % 2)); print "tmp: $tmp\n"; $some += $tmp > 9 ? $tmp - 9 : $tmp; } return $some % 10 eq 0 ? "OK $some" : "Bad num Card $some"; } print check_num($ARGV[0]), "\n";