1# 2# Locale::Currency - ISO three letter codes for currency identification 3# (ISO 4217) 4# 5# $Id: Currency.pm,v 2.2 2002/07/10 16:33:27 neilb Exp $ 6# 7 8package Locale::Currency; 9use strict; 10require 5.002; 11 12require Exporter; 13 14#----------------------------------------------------------------------- 15# Public Global Variables 16#----------------------------------------------------------------------- 17use vars qw($VERSION @ISA @EXPORT); 18$VERSION = sprintf("%d.%02d", q$Revision: 2.21 $ =~ /(\d+)\.(\d+)/); 19@ISA = qw(Exporter); 20@EXPORT = qw(&code2currency ¤cy2code 21 &all_currency_codes &all_currency_names ); 22 23#----------------------------------------------------------------------- 24# Private Global Variables 25#----------------------------------------------------------------------- 26my %CODES = (); 27my %CURRENCIES = (); 28 29 30#======================================================================= 31# 32# code2currency( CODE ) 33# 34#======================================================================= 35sub code2currency 36{ 37 my $code = shift; 38 39 40 return undef unless defined $code; 41 $code = lc($code); 42 if (exists $CODES{$code}) 43 { 44 return $CODES{$code}; 45 } 46 else 47 { 48 #--------------------------------------------------------------- 49 # no such currency code! 50 #--------------------------------------------------------------- 51 return undef; 52 } 53} 54 55 56#======================================================================= 57# 58# currency2code ( CURRENCY ) 59# 60#======================================================================= 61sub currency2code 62{ 63 my $curr = shift; 64 65 66 return undef unless defined $curr; 67 $curr = lc($curr); 68 if (exists $CURRENCIES{$curr}) 69 { 70 return $CURRENCIES{$curr}; 71 } 72 else 73 { 74 #--------------------------------------------------------------- 75 # no such currency! 76 #--------------------------------------------------------------- 77 return undef; 78 } 79} 80 81 82#======================================================================= 83# 84# all_currency_codes() 85# 86#======================================================================= 87sub all_currency_codes 88{ 89 return keys %CODES; 90} 91 92 93#======================================================================= 94# 95# all_currency_names() 96# 97#======================================================================= 98sub all_currency_names 99{ 100 return values %CODES; 101} 102 103 104#======================================================================= 105# initialisation code - stuff the DATA into the CODES hash 106#======================================================================= 107{ 108 my $code; 109 my $currency; 110 111 local $_; 112 113 while (<DATA>) 114 { 115 next unless /\S/; 116 chop; 117 ($code, $currency) = split(/:/, $_, 2); 118 $CODES{$code} = $currency; 119 $CURRENCIES{"\L$currency"} = $code; 120 } 121 122 close(DATA); 123} 124 1251; 126 127__DATA__ 128adp:Andorran Peseta 129aed:UAE Dirham 130afa:Afghani 131all:Lek 132amd:Armenian Dram 133ang:Netherlands Antillean Guilder 134aoa:Kwanza 135aon:New Kwanza 136aor:Kwanza Reajustado 137ars:Argentine Peso 138ats:Schilling 139aud:Australian Dollar 140awg:Aruban Guilder 141azm:Azerbaijanian Manat 142 143bam:Convertible Marks 144bbd:Barbados Dollar 145bdt:Taka 146bef:Belgian Franc 147bgl:Lev 148bgn:Bulgarian Lev 149bhd:Bahraini Dinar 150bhd:Dinar 151bif:Burundi Franc 152bmd:Bermudian Dollar 153bnd:Brunei Dollar 154bob:Boliviano 155bov:MVDol 156brl:Brazilian Real 157bsd:Bahamian Dollar 158btn:Ngultrum 159bwp:Pula 160byb:Belarussian Ruble 161byr:Belarussian Ruble 162bzd:Belize Dollar 163 164cad:Candian Dollar 165cdf:Franc Congolais 166chf:Swiss Franc 167clf:Unidades de Formento 168clp:Chilean Peso 169cny:Yuan Renminbi 170cop:Colombian Peso 171crc:Costa Rican Colon 172cup:Cuban Peso 173cve:Cape Verde Escudo 174cyp:Cyprus Pound 175czk:Czech Koruna 176 177dem:German Mark 178djf:Djibouti Franc 179dkk:Danish Krone 180dop:Dominican Peso 181dzd:Algerian Dinar 182 183ecs:Sucre 184ecv:Unidad de Valor Constante (UVC) 185eek:Kroon 186egp:Egyptian Pound 187ern:Nakfa 188esp:Spanish Peseta 189etb:Ethiopian Birr 190eur:Euro 191 192fim:Markka 193fjd:Fiji Dollar 194fkp:Falkland Islands Pound 195frf:French Franc 196 197gbp:Pound Sterling 198gel:Lari 199ghc:Cedi 200gip:Gibraltar Pound 201gmd:Dalasi 202gnf:Guinea Franc 203grd:Drachma 204gtq:Quetzal 205gwp:Guinea-Bissau Peso 206gyd:Guyana Dollar 207 208hkd:Hong Kong Dollar 209hnl:Lempira 210hrk:Kuna 211htg:Gourde 212huf:Forint 213 214idr:Rupiah 215iep:Irish Pound 216ils:Shekel 217inr:Indian Rupee 218iqd:Iraqi Dinar 219irr:Iranian Rial 220isk:Iceland Krona 221itl:Italian Lira 222 223jmd:Jamaican Dollar 224jod:Jordanian Dinar 225jpy:Yen 226 227kes:Kenyan Shilling 228kgs:Som 229khr:Riel 230kmf:Comoro Franc 231kpw:North Korean Won 232krw:Won 233kwd:Kuwaiti Dinar 234kyd:Cayman Islands Dollar 235kzt:Tenge 236 237lak:Kip 238lbp:Lebanese Pound 239lkr:Sri Lanka Rupee 240lrd:Liberian Dollar 241lsl:Loti 242ltl:Lithuanian Litas 243luf:Luxembourg Franc 244lvl:Latvian Lats 245lyd:Libyan Dinar 246 247mad:Moroccan Dirham 248mdl:Moldovan Leu 249mgf:Malagasy Franc 250mkd:Denar 251mmk:Kyat 252mnt:Tugrik 253mop:Pataca 254mro:Ouguiya 255mtl:Maltese Lira 256mur:Mauritius Rupee 257mvr:Rufiyaa 258mwk:Kwacha 259mxn:Mexican Nuevo Peso 260myr:Malaysian Ringgit 261mzm:Metical 262 263nad:Namibia Dollar 264ngn:Naira 265nio:Cordoba Oro 266nlg:Netherlands Guilder 267nok:Norwegian Krone 268npr:Nepalese Rupee 269nzd:New Zealand Dollar 270 271omr:Rial Omani 272 273pab:Balboa 274pen:Nuevo Sol 275pgk:Kina 276php:Philippine Peso 277pkr:Pakistan Rupee 278pln:Zloty 279pte:Portuguese Escudo 280pyg:Guarani 281 282qar:Qatari Rial 283 284rol:Leu 285rub:Russian Ruble 286rur:Russian Ruble 287rwf:Rwanda Franc 288 289sar:Saudi Riyal 290sbd:Solomon Islands Dollar 291scr:Seychelles Rupee 292sdd:Sudanese Dinar 293sek:Swedish Krona 294sgd:Singapore Dollar 295shp:St. Helena Pound 296sit:Tolar 297skk:Slovak Koruna 298sll:Leone 299sos:Somali Shilling 300srg:Surinam Guilder 301std:Dobra 302svc:El Salvador Colon 303syp:Syrian Pound 304szl:Lilangeni 305 306thb:Baht 307tjr:Tajik Ruble 308tmm:Manat 309tnd:Tunisian Dollar 310top:Pa'anga 311tpe:Timor Escudo 312trl:Turkish Lira 313ttd:Trinidad and Tobago Dollar 314twd:New Taiwan Dollar 315tzs:Tanzanian Shilling 316 317uah:Hryvnia 318uak:Karbovanets 319ugx:Uganda Shilling 320usd:US Dollar 321usn:US Dollar (Next day) 322uss:US Dollar (Same day) 323uyu:Peso Uruguayo 324uzs:Uzbekistan Sum 325 326veb:Bolivar 327vnd:Dong 328vuv:Vatu 329 330wst:Tala 331 332xaf:CFA Franc BEAC 333xag:Silver 334xau:Gold 335xba:European Composite Unit 336xbb:European Monetary Unit 337xbc:European Unit of Account 9 338xb5:European Unit of Account 17 339xcd:East Caribbean Dollar 340xdr:SDR 341xeu:ECU (until 1998-12-31) 342xfu:UIC-Franc 343xfo:Gold-Franc 344xof:CFA Franc BCEAO 345xpd:Palladium 346xpf:CFP Franc 347xpt:Platinum 348 349yer:Yemeni Rial 350yum:New Dinar 351 352zal:Financial Rand 353zar:Rand 354zmk:Kwacha 355zrn:New Zaire 356zwd:Zimbabwe Dollar 357