FreeBSD Manual Pages

Algorithm::CheckDigitsUserXContributed Perl Algorithm::CheckDigits::MXX_001(3)

NAME
CheckDigits::MXX_001 - compute check digits for german Personalausweis
(pa_de) or ABA routing numbers (aba_rn)

SYNOPSIS
use Algorithm::CheckDigits;

\$pa = CheckDigits('pa_de');

if (\$pa->is_valid('2406055684D<<6810203<0705109<6')) {
# do something
}

if (\$pa->is_valid('2406055684') {
# do_something
}

\$cn = \$pa->complete('240605568_D<<681020_<070510_<_');
# \$cn = '2406055684D<<6810203<0705109<6'

\$cd = \$pa->checkdigit('2406055684D<<6810203<0705109<6');
# \$cd = '6'

\$bn = \$pa->basenumber('2406055684D<<6810203<0705109<6');
# \$bn = '240605568_D<<681020_<070510_<_'

\$aba =	CheckDigits('aba_rn');
if (\$aba->is_valid('789456124')) {
#	do something
}

DESCRIPTION
ALGORITHM
1.  Beginning left all digits are weighted with 7,3,1,7,3,1,... for
pa_de or 3,7,1,3,7,1,3,7,1 for aba_rn.

2.  The sum of those products is	computed.

3.  For pa_de the checksum is the last digit of the sum from step 2
(modulo 10).

For aba_rn the checksum is the difference of	the sum	from step 2 to
the next multiple of	10.

4.  For the german Personalausweis step 1 to 3 is performed for every
part	of the number and for all 3 parts including the	particular
checkdigit to compute the total checksum.

If the number solely	consists of digits, the	checksum is just
computed once according to algorithm	given above.

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.

EXPORT
None by default.

AUTHOR
Mathias Weidner,	"<mamawe@cpan.org>"

THANKS
Aaron W.	West pointed me	to a fault in the computing of the check
digit. Jim Hickstein made me aware of the ABA routing numbers.