Thanks(++) for a really nice example of using Cache::FileCache -- exactly the kind of thing that's good to learn in general. The only thing I would add is some way to get the list of know currency abbreviations (and their full-length names), so that you could trap an unknown currency spec before sending it off to Yahoo via Finance::Quote -- and you could even show the clueless user what the available currency codes/names are.
There's bound to be some easy-to-fetch reference list for that; or maybe you could take the time to pull in the contents of http://uk.finance.yahoo.com/currency-converter, which appears to contain the full menu of available choices (hence, the set that Finance::Quote is able to service), and parse out the contents of that menu.