November 2012 Archive

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

 

Über dieses Archiv

Diese Seite enthält alle Einträge von Perl HowTo von neu nach alt.

Oktober 2012 ist das vorherige Archiv.

Dezember 2012 ist das nächste Archiv.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.