X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FLocale%2FCurrency.pm;h=13cd0482ba701208136e5d1fcd0c7ac3ed5cbf87;hb=f666394a093bd03d30919ca4d18ce92778eb4605;hp=054ac1b59d15f383b8007a66c7fc052c94b3a5a0;hpb=47a334e99a6f8afdee73613c4a17ed090015ff78;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Locale/Currency.pm b/lib/Locale/Currency.pm index 054ac1b..13cd048 100644 --- a/lib/Locale/Currency.pm +++ b/lib/Locale/Currency.pm @@ -1,64 +1,21 @@ -#----------------------------------------------------------------------- - -=head1 NAME - -Locale::Currency - ISO three letter codes for currency identification (ISO 4217) - -=head1 SYNOPSIS - - use Locale::Currency; - - $curr = code2currency('usd'); # $curr gets 'US Dollar' - $code = currency2code('Euro'); # $code gets 'eur' - - @codes = all_currency_codes(); - @names = all_currency_names(); - -=cut - -#----------------------------------------------------------------------- +# +# Locale::Currency - ISO three letter codes for currency identification +# (ISO 4217) +# +# $Id: Currency.pm,v 2.7 2004/06/10 21:19:34 neilb Exp $ +# package Locale::Currency; use strict; require 5.002; -#----------------------------------------------------------------------- - -=head1 DESCRIPTION - -The C module provides access to the ISO three-letter -codes for identifying currencies and funds, as defined in ISO 4217. -You can either access the codes via the L -(described below), -or with the two functions which return lists of all currency codes or -all currency names. - -There are two special codes defined by the standard which aren't -understood by this module: - -=over 4 - -=item XTS - -Specifically reserved for testing purposes. - -=item XXX - -For transactions where no currency is involved. - -=back - -=cut - -#----------------------------------------------------------------------- - require Exporter; #----------------------------------------------------------------------- # Public Global Variables #----------------------------------------------------------------------- use vars qw($VERSION @ISA @EXPORT); -$VERSION = sprintf("%d.%02d", q$Revision: 1.3 $ =~ /(\d+)\.(\d+)/); +$VERSION = sprintf("%d.%02d", q$Revision: 2.7 $ =~ /(\d+)\.(\d+)/); @ISA = qw(Exporter); @EXPORT = qw(&code2currency ¤cy2code &all_currency_codes &all_currency_names ); @@ -71,38 +28,9 @@ my %CURRENCIES = (); #======================================================================= - -=head1 CONVERSION ROUTINES - -There are two conversion routines: C and C. - -=over 8 - -=item code2currency() - -This function takes a three letter currency code and returns a string -which contains the name of the currency identified. If the code is -not a valid currency code, as defined by ISO 4217, then C -will be returned. - - $curr = code2currency($code); - -=item currency2code() - -This function takes a currency name and returns the corresponding -three letter currency code, if such exists. -If the argument could not be identified as a currency name, -then C will be returned. - - $code = currency2code('French Franc'); - -The case of the currency name is not important. -See the section L below. - -=back - -=cut - +# +# code2currency( CODE ) +# #======================================================================= sub code2currency { @@ -124,6 +52,12 @@ sub code2currency } } + +#======================================================================= +# +# currency2code ( CURRENCY ) +# +#======================================================================= sub currency2code { my $curr = shift; @@ -144,145 +78,36 @@ sub currency2code } } -#======================================================================= - -=head1 QUERY ROUTINES - -There are two function which can be used to obtain a list of all -currency codes, or all currency names: - -=over 8 - -=item C - -Returns a list of all three-letter currency codes. -The codes are guaranteed to be all lower-case, -and not in any particular order. - -=item C - -Returns a list of all currency names for which there is a corresponding -three-letter currency code. The names are capitalised, and not returned -in any particular order. - -=back - -=cut #======================================================================= +# +# all_currency_codes() +# +#======================================================================= sub all_currency_codes { return keys %CODES; } + +#======================================================================= +# +# all_currency_names() +# +#======================================================================= sub all_currency_names { return values %CODES; } -#----------------------------------------------------------------------- - -=head1 EXAMPLES - -The following example illustrates use of the C function. -The user is prompted for a currency code, and then told the corresponding -currency name: - - $| = 1; # turn off buffering - - print "Enter currency code: "; - chop($code = ); - $curr = code2currency($code); - if (defined $curr) - { - print "$code = $curr\n"; - } - else - { - print "'$code' is not a valid currency code!\n"; - } - -=head1 KNOWN BUGS AND LIMITATIONS - -=over 4 - -=item * - -In the current implementation, all data is read in when the -module is loaded, and then held in memory. -A lazy implementation would be more memory friendly. - -=item * - -This module also includes the special codes which are -not for a currency, such as Gold, Platinum, etc. -This might cause a problem if you're using this module -to display a list of currencies. -Let Neil know if this does cause a problem, and we can -do something about it. - -=item * - -ISO 4217 also defines a numeric code for each currency. -Currency codes are not currently supported by this module. - -=item * - -There are three cases where there is more than one -code for the same currency name. -Kwacha has two codes: mwk for Malawi, and zmk for Zambia. -The Russian Ruble has two codes: rub and rur. -The Belarussian Ruble has two codes: byr and byb. -The currency2code() function only returns one code, so -you might not get back the code you expected. - -=back - -=head1 SEE ALSO - -=over 4 - -=item Locale::Country - -ISO codes for identification of country (ISO 3166). -Supports alpha-2, alpha-3, and numeric codes. -The currency codes use the alpha-2 codeset. - -=item ISO 4217:1995 - -Code for the representation of currencies and funds. - -=item http://www.bsi-global.com/iso4217currency - -Official web page for the ISO 4217 maintenance agency. -This has the latest list of codes, in MS Word format. Boo. - -=back - -=head1 AUTHOR - -Michael Hennecke Ehennecke@rz.uni-karlsruhe.deE -and -Neil Bowers Eneilb@cre.canon.co.ukE - -=head1 COPYRIGHT - -Copyright (c) 2001 Michael Hennecke and -Canon Research Centre Europe (CRE). - -This module is free software; you can redistribute it and/or -modify it under the same terms as Perl itself. - -=cut - -#----------------------------------------------------------------------- #======================================================================= # initialisation code - stuff the DATA into the CODES hash #======================================================================= { - my $code; - my $currency; + my $code; + my $currency; + local $_; while () @@ -293,6 +118,8 @@ modify it under the same terms as Perl itself. $CODES{$code} = $currency; $CURRENCIES{"\L$currency"} = $code; } + + close(DATA); } 1; @@ -334,7 +161,7 @@ byb:Belarussian Ruble byr:Belarussian Ruble bzd:Belize Dollar -cad:Candian Dollar +cad:Canadian Dollar cdf:Franc Congolais chf:Swiss Franc clf:Unidades de Formento