Tagesaktuelle Währungsumrechnung
Veröffentlicht von Thomas Fahle am (Permalink)
alexm hat drüben bei den Perlmonks ein kleines Programm zur tagesaktuellen Währungsumrechnung veröffentlicht: Using up-to-date currency conversion rates
#!/usr/bin/perl use strict; use warnings; # Quelle: Using up-to-date currency conversion rates # http://www.perlmonks.org/?node_id=709343 use Locale::Currency; use File::Basename; use Cache::FileCache; use Finance::Quote; die "usage: $0 amount currency_from currency_to\n" unless @ARGV == 3; my $amount = shift @ARGV; my ($currency_from, $currency_to) = map { uc } @ARGV; for my $code ($currency_from, $currency_to) { die "sorry, currency $code not in ISO 4217\n" unless defined code2currency($code); } my ($filename) = fileparse($0, '.pl'); my $cache = Cache::FileCache->new({ cache_root => "$ENV{HOME}/.$filename", default_expires_in => '1 day', }); my $quote = Finance::Quote->new(); my $ratio = $cache->get("$currency_from:$currency_to"); $ratio = $quote->currency($currency_from, $currency_to) unless defined $ratio; die "sorry, cannot convert from $currency_from to $currency_to\n" unless defined $ratio; $cache->set("$currency_from:$currency_to", $ratio); print "$amount $currency_from = ", $amount * $ratio, " $currency_to\n";
Wenn man das Programm als currency.pl speichert und anschließend auf der Kommandozeile aufruft, ergibt sich beispielsweise folgende Ausgabe.
$ perl currency.pl 100 USD EUR 100 USD = 70.46 EUR
Finance::Quote holt den Umrechnungsfaktor, Cache::FileCache speichert diesen Faktor für einen Tag auf der lokalen Festplatte und Locale::Currency prüft, ob die eingegebenen Währungscodes gültig sind.