Das Modul Roman - Perl module for conversion between Roman and Arabic numerals - von Alexandr Ciornii vereinfacht die Umrechnung von Römische Zahlen in Indisch-Arabische Zahlen und umgekehrt.
Indisch-Arabische Zahlen in römische Zahlen umrechnen
Die automatisch exportierte Funktion Roman liefert römische Zahlen in Großbuchstaben. Wer kleine Buchstaben bevorzugt, verwendet statt dessen die (hier nicht gezeigte) Funktion roman.
#!/usr/bin/perl use strict; use warnings; use Roman; my @arabic_numbers = ( 1 .. 10 ); foreach my $arabic (@arabic_numbers) { my $roman = Roman($arabic); printf( "%-5s %-5s\n", $arabic, $roman ); }
Das Programm erzeugt folgende Ausgabe:
1 I 2 II 3 III 4 IV 5 V 6 VI 7 VII 8 VIII 9 IX 10 X
Römische Zahlen in Indisch-Arabische Zahlen umrechnen
Die ebenfalls automatisch exportiert Funktion arabic rechnet römische Zahlen in Indisch-Arabische Zahlen um. isroman prüft, ob es sich auch wirklich um eine gültige römische Zahl handelt.
#!/usr/bin/perl use strict; use warnings; use Roman; my @roman_numbers = qw( X XX L C CM MCD ); foreach my $roman (@roman_numbers) { if ( isroman($roman) ) { my $arabic = arabic($roman); printf( "%-5s %5s\n", $roman, $arabic ); } else { warn "$roman ist keine gueltige roemische Zahl!\n"; } }
Das Programm erzeugt folgende Ausgabe:
X 10 XX 20 L 50 C 100 CM 900 MCD 1400
Datum in römischen Zahlen
Das nachfolgende Snippet habe ich im Blog von Ovid im Beitrag Dates in Latin gefunden und als Grundlage für ein kleines Programm verwendet:
#!/usr/bin/perl use strict; use warnings; use Roman; use DateTime; my $dt = DateTime->new( year => 2010, month => 06, day => 7, time_zone => 'Europe/Berlin', ); my $date = latin_date($dt); my $workshop_count = Roman(12); print qq~Der $workshop_count. Deutsche Perl-Workshop in Schorndorf (bei Stuttgart) startet am "$date".\n~; sub latin_date { # Quelle: http://blogs.perl.org/users/ovid/2010/05/dates-in-latin.html my $datetime = shift; my @days = ( 'Dies Dominica', 'Dies Lunae', 'Dies Martis', 'Dies Mercurii', 'Dies Iovis', 'Dies Veneris', 'Dies Saturni', 'Dies Dominica', ); my @months = ( 'Januarius', 'Februarius', 'Martius', 'Aprilis', 'Maius', 'Junius', 'Julius', 'Augustus', 'September', 'October', 'Novembris', 'December' ); return join ' ' => $days[ $datetime->day_of_week ], roman( $datetime->day ), $months[ $datetime->month - 1 ], uc( roman( $datetime->year ) ); }
Das Programm erzeugt folgende Ausgabe:
Der XII. Deutsche Perl-Workshop in Schorndorf (bei Stuttgart) startet am "Dies Lunae vii Junius MMX".
Siehe auch:
- Ovid: Dates in Latin
- CPAN: DateTime - A date and time object
- CPAN: Roman - Perl module for conversion between Roman and Arabic numerals
- PLEAC-Perl: Numbers - Working with Roman Numerals
- Wikipedia: Römische Zahlen
- Wikipedia: Indisch-Arabische Zahlen
- Deutscher Perl-Workshop