Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# Manual Reference Pages  -  ALGORITHM::CHECKDIGITS::MXX_003 (3)

.ds Aq ’

### NAME

CheckDigits::MXX_003 - compute check digits for DEM

### SYNOPSIS

```

use Algorithm::CheckDigits;

\$dem = CheckDigits(dem);

if (\$dem->is_valid(GD0645027K1)) {
# do something
}

\$cn = \$dem->complete(GD0645027K);
# \$cn = GD0645027K1

\$cd = \$dem->checkdigit(GD0645027K1);
# \$cd = 1

\$bn = \$dem->basenumber(GD0645027K1);
# \$bn = GD0645027K

```

### DESCRIPTION

#### ALGORITHM

The algorithm is a variation of the Verhoeff scheme.
0 All letters are changed to numbers.
1 All digits are permutated according to a permutation table.
2 The permutated digits are combined using a dieeder table. The first with the second, the result with the third, this result with the fourth and so on.
3 The result of the last combination in the dieeder table is in such a way combined that the result is 0 (zero). The number used for this combination is the checksum.
For details look at the source.

#### METHODS

 is_valid(\$number) Returns true only if \$number consists solely of numbers and the last digit is a valid check digit according to the algorithm given above. Returns false otherwise, complete(\$number) The check digit for \$number is computed and concatenated to the end of \$number. Returns the complete number with check digit or ’’ if \$number does not consist solely of digits and spaces. basenumber(\$number) Returns the basenumber of \$number if \$number has a valid check digit. Return ’’ otherwise. checkdigit(\$number) Returns the checkdigit of \$number if \$number has a valid check digit. Return ’’ otherwise.

None by default.

### AUTHOR

Mathias Weidner, <mamawe@cpan.org>