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

Veröffentlicht von Thomas Fahle am (Permalink)

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

Weitere Posts