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.

Siehe auch:

Weitere Posts