# FreeBSD Manual Pages

```Algorithm::CheckDigitsUser0Contributed Perl Algorithm::CheckDigits::M10_004(3)

NAME
CheckDigits::M10_004 - compute check digits for 2aus5, EAN, ILN,
ISBN13, NVE

SYNOPSIS
use Algorithm::CheckDigits;

\$ean =	CheckDigits('ean');

if (\$ean->is_valid('7622200004607')) {
# do something
}

\$cn = \$ean->complete('762220000460');
# \$cn = '7622200004607'

\$cd = \$ean->checkdigit('7622200004607');
# \$cd = '7'

\$bn = \$ean->basenumber('7622200004607');
# \$bn = '762220000460'

DESCRIPTION
ALGORITHM
1.  Beginning right all numbers are weighted alternatively 1 and	3
(that is the	check digit is weighted	1).

3.  The sum of step 3 ist taken modulo 10.

4.  The check digit is the difference between 10	and the	number from
step	3.

To validate the total of	the digits of all numbers inclusive check
digit taken modulo 10 must be 0.

METHODS
is_valid(\$number)
Returns true	only if	\$number	consists solely	of digits, spaces and
hyphen 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, spaces	and hyphen.

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.

BUGS AND LIMITATIONS
When invoked as "CheckDigits('isbn13')" the module checks whether the
first three digits (the country code) are 978 or	979, the current (as
of 2006)	EAN country codes for books. If	at any time other EAN country
codes for ISBN-13 will be specified and the then	responsible maintainer
ignores this in the code, please	send a friendly	email.

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