Locale::Country - ISO 3166 - Norm für Kodierung von geographischen Einheiten

| | Kommentare (0)

Die ISO 3166 ist ein Standard für die Kodierung von geographischen Einheiten, aka Ländern. Jedem Land werden drei Codes zugeordnet: Ein zweistelliger Ländercode (ALPHA-2), ein dreistelliger Ländercode (ALPHA-3) und ein numerischer Ländercode (NUMERIC).

Diese Ländercodes können in der ISO-3166-1-Kodierliste nachgeschlagen werden. Beispielsweise sind Deutschland (Germany) folgende Codes zugeordnet:

  • DE (ALPHA-2)
  • DEU (ALPHA-3)
  • 276 (NUMERIC)

Locale::Countryvon Neil Bowers ermöglicht den Zugriff auf die Ländercodes gemäß ISO 3166.

Über die der Konstanten LOCALE_CODE_ALPHA_2, LOCALE_CODE_ALPHA_3 und LOCALE_CODE_NUMERIC teilt man den Funktionen code2country() bzw. country2code() mit, welcher der drei Codes verwendet werden soll. Ohne diese Angabe wird automatisch LOCALE_CODE_ALPHA_2 verwendet.

Mit Hilfe dieses Moduls lässt sich z.B. leicht prüfen, ob ein gültiger ISO-Code vorliegt.

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

use Locale::Country;

$| = 1;    # turn off buffering

###########################################################
print "Bitte zweistelligen Ländercode eingeben: ";
chomp(my $code = <STDIN>);

my $country = code2country($code); # LOCALE_CODE_ALPHA_2 implizit
if (defined $country) {
        print "$code = $country\n";
}
else {
        print "'$code' ist kein gültiger Ländercode!\n";
}
###########################################################
print "Bitte dreistelligen Ländercode eingeben: ";
chomp($code = <STDIN>);

$country = code2country($code, LOCALE_CODE_ALPHA_3); 
if (defined $country) {
        print "$code = $country\n";
}
else {
        print "'$code' ist kein gültiger Ländercode!\n";
}
###########################################################
print "Bitte dreistelligen numerischen Ländercode eingeben: ";
chomp($code = <STDIN>);

$country = code2country($code, LOCALE_CODE_NUMERIC); 
if (defined $country) {
        print "$code = $country\n";
}
else {
        print "'$code' ist kein gültiger Ländercode!\n";
}
###########################################################

Wenn man das Programm als localecountry.pl speichert und anschließend auf der Kommandozeile aufruft, ergibt sich beispielsweise folgende Ausgabe.

per localecountry.pl 
Bitte zweistelligen Ländercode eingeben: DE
DE = Germany
Bitte dreistelligen Ländercode eingeben: DEU
DEU = Germany
Bitte dreistelligen numerischen Ländercode eingeben: 276
276 = Germany

Aus dem Namen eines Landes lassen sich leicht die zugehörigen Ländercodes ermitteln. Gleichzeitig lässt sich prüfen, ob der Name des Landes der ISO 3166 entspricht.

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

use Locale::Country;

$| = 1;    # turn off buffering

print "Bitte den Namen eines Landes eingeben: ";
chomp(my $country = <STDIN>);

my $code    = country2code($country); # LOCALE_CODE_ALPHA_2 implizit
if ( defined $code ) {
	print "$country = $code\n";
} 
else {
	print "'$country' ist kein gültiger Name!\n";
	exit;
}

$code    = country2code($country, LOCALE_CODE_ALPHA_3 );    
print "$country = $code\n";

$code    = country2code($country, LOCALE_CODE_NUMERIC );    
print "$country = $code\n";

Wenn man das Programm als localecountry2.pl speichert und anschließend auf der Kommandozeile aufruft, ergibt sich beispielsweise folgende Ausgabe.

perl localecountry2.pl 
Bitte den Namen eines Landes eingeben: Germany
Germany = de
Germany = deu
Germany = 276

Siehe auch

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 16.09.08 19:00.

Datenstrukturen visualisieren mit GraphViz::Data::Grapher ist der vorherige Eintrag in diesem Blog.

Locale::Currency - ISO 4217 - Norm für Währungs-Abkürzungen ist der nächste Eintrag in diesem Blog.

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

Perl Suchmaschine

Blog Roll

Powered by Movable Type 4.1