NAME

Algorithm::CheckDigits - Perl extension to generate and test check digits

SYNOPSIS

perl -MAlgorithm::CheckDigits -e Algorithm::CheckDigits::print_methods

or

  use Algorithm::CheckDigits;
  
  @ml = Algorithm::CheckDigits->method_list();

  $isbn = CheckDigits('ISBN');

  if ($isbn->is_valid('3-930673-48-7')) {
	# do something
  }

  $cn = $isbn->complete('3-930673-48');     # $cn = '3-930673-48-7'

  $cd = $isbn->checkdigit('3-930673-48-7'); # $cd = '7'

  $bn = $isbn->basenumber('3-930673-48-7'); # $bn = '3-930673-48'

ABSTRACT

This module provides a number of methods to test and generate check digits. For more information have a look at the web site www.pruefziffernberechnung.de (german).

SUBROUTINES/METHODS

CheckDigits($method)

Returns an object of an appropriate Algorithm::CheckDigits class for the given algorithm.

Dies with an error message if called with an unknown algorithm.

See below for the available algorithms. Every object understands the following methods:

is_valid($number)

Returns true or false if $number contains/contains no valid check digit.

complete($number)

Returns a string representation of $number completed with the appropriate check digit.

checkdigit($number)

Extracts the check digit from $number if $number contains a valid check digit.

basenumber($number)

Extracts the basenumber from $number if $number contains a valid check digit.

Algorithm::CheckDigits::method_list()

Returns a list of known methods for check digit computation.

Algorithm::CheckDigits::print_methods()

Returns a list of known methods for check digit computation.

You may use the following to find out which methods your version of Algorithm::CheckDigits provides and where to look for further information.

perl -MAlgorithm::CheckDigits -e Algorithm::CheckDigits::print_methods

CHECK SUM METHODS

At the moment these methods to compute check digits are provided: (vatrn - VAT Return Number, in german ustid UmsatzSTeuer-ID)

m07-001

See Algorithm::CheckDigits::M07_001.

euronote, m09-001

European bank notes, see Algorithm::CheckDigits::M09_001.

amex, bahncard, diners, discover, enroute, eurocard, happydigits, isin, jcb, klubkarstadt, mastercard, miles&more, visa, m09-001, imei, imeisv

See Algorithm::CheckDigits::M10_001.

siren, siret, m10-002

See Algorithm::CheckDigits::M10_002.

ismn, m10-003

See Algorithm::CheckDigits::M10_003.

ean, iln, isbn13, nve, 2aus5, m10-004

See Algorithm::CheckDigits::M10_004.

identcode_dp, leitcode_dp, m10-005

See Algorithm::CheckDigits::M10_005.

rentenversicherung, m10-006

See Algorithm::CheckDigits::M10_006.

sedol, m10-008

See Algorithm::CheckDigits::M10_008.

betriebsnummer, m10-009

See Algorithm::CheckDigits::M10_009.

postscheckkonti, m10-010

See Algorithm::CheckDigits::M10_010.

ups, m10-011

See Algorithm::CheckDigits::M10_011.

hkid, isbn, issn, nhs_gb, ustid_pt, vat_sl, wagonnr_br, m11-001

See Algorithm::CheckDigits::M11_001.

pzn, m11-002

See Algorithm::CheckDigits::M11_002.

pkz, m11-003

See Algorithm::CheckDigits::M11_003.

cpf, titulo_eleitor, m11-004

See Algorithm::CheckDigits::M11_004.

ccc_es, m11-006

See Algorithm::CheckDigits::M11_006.

ustid_fi, vatrn_fi, m11-007

See Algorithm::CheckDigits::M11_007.

ustid_dk, vatrn_dk, m11-008

See Algorithm::CheckDigits::M11_008.

nric_sg, m11-009

See Algorithm::CheckDigits::M11_009.

ahv_ch, m11-010

See Algorithm::CheckDigits::M11_010.

ustid_nl, vatrn_nl, m11-011

See Algorithm::CheckDigits::M11_011.

bwpk_de, m11-012

See Algorithm::CheckDigits::M11_012.

ustid_gr, vatrn_gr, m11-013

See Algorithm::CheckDigits::M11_013.

esr5_ch, m11-015

See Algorithm::CheckDigits::M11_015.

ustid_pl, vatrn_pl, m11-016

See Algorithm::CheckDigits::M11_016.

ecno, ec-no, einecs, elincs, m11-017

See Algorithm::CheckDigits::M11_017.

isan, m16-001

See Algorithm::CheckDigits::M16_001.

dni_es, m23-001

See Algorithm::CheckDigits::M23_001.

ustid_ie, vatrn_ie, m23-002

See Algorithm::CheckDigits::M23_002.

code_39, m43-001

See Algorithm::CheckDigits::M43_001.

ustid_lu, vatrn_lu, m89-001

See Algorithm::CheckDigits::M89_001.

ustid_be, vatrn_be, m97-001

See Algorithm::CheckDigits::M97_001.

iban, m97-002

See Algorithm::CheckDigits::M97_002.

upc, mbase-001

See Algorithm::CheckDigits::MBase_001.

blutbeutel, bzue_de, ustid_de, vatrn_de, mbase-002

See Algorithm::CheckDigits::MBase_002.

sici, mbase-003

See Algorithm::CheckDigits::MBase_003.

pa_de, mxx-001

See Algorithm::CheckDigits::MXX_001.

cas, mxx-002

See Algorithm::CheckDigits::MXX_002.

dem, mxx-003

Old german bank notes (DEM), see Algorithm::CheckDigits::MXX_003.

ustid_at, vatrn_at, mxx-004

See Algorithm::CheckDigits::MXX_004.

esr9_ch, mxx-005

See Algorithm::CheckDigits::MXX_005.

verhoeff, mxx-006

Verhoeff scheme, see Algorithm::CheckDigits::MXX_006 or Algorithm::Verhoeff

EXPORT

None by default.

SEE ALSO

perl, www.pruefziffernberechnung.de.

BUGS AND LIMITATIONS

Please report any bugs or feature requests to bug-algorithm-checkdigits@rt.cpan.org, or through the web interface at http://rt.cpan.org.

AUTHOR

Mathias Weidner, mamawe@cpan.org

THANKS

Petri Oksanen made me aware that CheckDigits('IMEI') would invoke no test at all since there was no entry for this in the methods hash.

COPYRIGHT AND LICENSE

Copyright 2004-2010 by Mathias Weidner

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.