Tagesaktuelle Währungsumrechnung

| | Kommentare (0)

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:

Jetzt kommentieren

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Thomas Fahle vom 16.09.08 19:22.

Locale::Currency - ISO 4217 - Norm für Währungs-Abkürzungen ist der vorherige Eintrag in diesem Blog.

Archive::Zip - Verzeichnisse und Dateien im Zip-Format packen und entpacken ist der nächste Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.