Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??

A friend of mine is living this year in the USA, and she asked me how to program with Perl some unit conversions. The currency conversion is volatile since the ratio changes a lot, so I came up with this:

use strict; use warnings; 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" +;

She liked it, and so do I because it's so simple that it doesn't need comments at all. Just try:

$ perl exchange.pl 100 usd eur 100 USD = 70.22 EUR

Update: added ISO 4217 currency code check per graff's request.


In reply to Using up-to-date currency conversion rates by alexm

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    [Corion]: In a way, it's sad that Firefox kills off the add-on functionality... But, as n-gate usually writes, "Firefox tries to be more like Chrome"
    [holli]: it's not always possible to do a complete rewrite without cutting off some pigtails
    [Discipulus]: indeed! new firefox seems poorer: many tab crash, and you open this link in FF?
    [Discipulus]: problem scrolling even main page..;=(
    [LanX]: holli -> Good Intentions: Wikisyntax for the Monastery
    [LanX]: monklinks are automatically converted ...

    How do I use this? | Other CB clients
    Other Users?
    Others drinking their drinks and smoking their pipes about the Monastery: (12)
    As of 2017-11-20 19:05 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      In order to be able to say "I know Perl", you must have:













      Results (291 votes). Check out past polls.

      Notices?