Algorithm::CheckDigits - Überprüfung von Nummerncodes

Veröffentlicht von Thomas Fahle am (Permalink)

Algorithm::CheckDigits - Perl extension to generate and test check digits von Mathias Weidner vereinfacht die Überprüfung von Nummerncodes, wie Umsatzsteuer-Identifikationsnummern, ISBNs, Betriebsnummern, Blutbeutel Eurocodes und zahlreichen mehr.

Dabei bietet Algorithm::CheckDigits eine konsistente Schnittstelle zu allen Berechnungsmethoden an.

Mit CheckDigits() wird das gewünschte Berechnungsverfahren gewählt und man erhält das passende Objekt zurück. Die Methode is_valid() prüft den Nummerncode, basenumber() liefert die Basiszahl und checkdigit() liefert die Prüfziffer für die Basiszahl zurück.

 

Alle verfügbaren Berechnungsmethoden auflisten

Eine Übersicht aller verfügbaren Berechnungsmethoden liefert method_list.

#!/usr/bin/perl
use strict;
use warnings;

use Algorithm::CheckDigits;

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

foreach my $method ( @ml ) {
	print "$method\n";
}

Das Programm liefert folgende (deutlich gekürzte) Ausgabe:

2aus5
ahv_ch
amex
bahncard
betriebsnummer
blutbeutel
...
ustid_at
ustid_be
ustid_de
...
verhoeff
visa
wagonnr_br

 

Beispiel: Umsatzsteuer-Identifikationsnummer Deutschland

Das folgende Beispiel testet eine deutsche Umsatzsteuer-Identifikationsnummer.

#!/usr/bin/perl
use strict;
use warnings;

use Algorithm::CheckDigits;

my $ustid_de = CheckDigits('ustid_de');

#Umsatzsteuernummer: DE175903868
my $ustid = '175903868';

if ( $ustid_de->is_valid($ustid) ) {
    print "UmsatzsteuerID: $ustid ist okay.\n";
    my $cd = $ustid_de->checkdigit($ustid);
    my $bn = $ustid_de->basenumber($ustid);
    print "Checkdigit: $cd\n";
    print "Basiszahl: $bn\n";

}
else {
    print "UmsatzsteuerID: $ustid ist NICHT okay.\n";
}

Das Programm liefert folgende Ausgabe:

UmsatzsteuerID: 175903868 ist okay.
Checkdigit: 8
Basiszahl: 17590386

Umsatzsteuer-Identifikationsnummern aus Österreich lassen sich mit der Methode ustid_at checken. Ebenso lassen sich Umsatzsteuer-Identifikationsnummern aus den Niederlanden mittels ustid_nl testen.

 

Beispiel: ISBN-10

Das folgende Beispiel testet eine 10-stellige ISBN. 13-stellige ISBN lassen sich mit isbn13 prüfen.

#!/usr/bin/perl
use strict;
use warnings;

use Algorithm::CheckDigits;

my $isbn10_cd = CheckDigits('isbn');

my $isbn = '386899145X';

if ( $isbn10_cd->is_valid($isbn) ) {
    print "ISBN-10: $isbn ist okay.\n";
    my $cd = $isbn10_cd->checkdigit($isbn);
    my $bn = $isbn10_cd->basenumber($isbn);
    print "Checkdigit: $cd\n";
    print "Basiszahl: $bn\n";

}
else {
    print "ISBN-10: $isbn ist NICHT okay.\n";
}

Das Programm liefert folgende Ausgabe:

ISBN-10: 386899145X ist okay.
Checkdigit: X
Basiszahl: 386899145

 

Siehe auch

 

Weitere Posts