Saturday, October 06, 2007

In 80 Tagen um die Welt - Tag 5

Auf dem Weg von Italien nach Ägypten muss Phileas Fogg über das Mittelmeer - beginnend in Brindisi, einer italienischen Hafenstadt. 1999 bin ich selbst von dort nach nach Griechenland gefahren - das waren einige Stunden Fahrt mit der Fähre. Diese Mischung bringt mich auch auf das heutige Perl-Modul... Auf der Fahrt kommt Phileas Fogg nahe an Griechenland vorbei. Um den Griechen seine Wette zu erklären, muss er die "80" Tage in eine Zahl umwandeln, die in griechischen Buchstaben geschrieben wird. Zum Glück gibt es das Modul Convert::Number::Greek!

Ein einfaches Beispielskript:
#!/usr/bin/perl

use strict;
use warnings;
use Convert::Number::Greek 'num2greek';use Encode;

my $number = 80;
my $greek = num2greek $number;
print $greek;
Wer das ausführt bekommt wahrscheinlich eine Warnung und das Ergebnis angezeigt. Die Warnung wird ungefähr so aussehen:
Wide character in print at skript.pl line 9.
Dieses Problem tritt dann auf, wenn man mit Unicode zu tun hat. Diese Warnung kann man auf zwei Wegen "abschalten"...

1.) Dem Filehandle mitteilen, dass der utf8-Layer verwendet werden soll, also einfach ein
binmode STDOUT, ':utf8';
vor der print-Anweisung.

2.) Mit dem Modul Encode arbeiten:
#!/usr/bin/perl

use strict;
use warnings;
use Convert::Number::Greek 'num2greek';
use Encode;

my $number = 80;
my $greek = num2greek $number;

$greek = encode_utf8( $greek );
print $greek;

No comments: