NAME
Data::Currency - Container class for currency conversion/formatting
SYNOPSIS
use Data::Currency;
my $price = Data::Currency->new(1.2. 'USD');
print $price; # 1.20 USD
print $price->code; # USD
print $price->format; # FMT_SYMBOL
print $price->as_string; # 1.20 USD
print $price->as_string('FMT_SYMBOL'); # $1.20
print 'Your price in Canadian Dollars is: ';
print $price->convert('CAD')->value;
DESCRIPTION
The Data::Currency module provides basic currency formatting and
conversion:
my $price = 1.23;
my $currency = Data::Currency->new($price);
print $currency->convert('CAD')->as_string;
Each Data::Currency object will stringify to the original value except
in string context, where it stringifies to the format specified in
"format".
CONSTRUCTOR
new
Arguments: $price [, $code, $format] || \%options
To create a new Data::Currency object, simply call "new" and pass in the
price to be formatted:
my $currency = Data::Currency->new(10.23);
my $currency = Data::Currency->new({
value => 1.23,
code => 'CAD',
format => 'FMT_SYMBOL',
converter_class => 'MyConverterClass'
});
You can also pass in the default currency code and/or currency format to
be used for each instance. If no code or format are supplied, future
calls to "as_string" and "convert" will use the default format and code
values.
You can set the defaults by calling the code/format values as class
methods:
Data::Currency->code('USD');
Data::Currency->format('FMT_COMMON');
my $currency = Data::Currency->new(1.23);
print $currency->as_string; # $1.23
my $currency = Data::Currency->new(1.23, 'CAD', 'FMT_STANDARD');
print $currency->as_string; # 1.23 CAD
The following defaults are set when Data::Currency is loaded:
value: 0
code: USD
format: FMT_COMMON
METHODS
code
Arguments: $code
Gets/sets the three letter currency code for the current currency
object. "code" dies loudly if "code" isn't a valid currency code.
convert
Arguments: $code
Returns a new Data::Currency object containing the converted value.
If no "code" is specified, the current value of "code" will be used. If
the currency you are converting to is the same as the current objects
currency code, convert will just return itself.
Remember, convert returns another currency object, so you can chain
away:
my $price = Data::Currency->new(1.25, 'USD');
print $price->convert('CAD')->as_string;
"convert" dies if "code" isn't valid currency code or isn't defined.
converter_class
Arguments: $converter_class
Gets/sets the converter class to be used when converting currency
numbers.
Data::Currency->converter_class('MyCurrencyConverter');
The converter class can be any class that supports the following method
signature:
sub convert {
my ($self, $price, $from, $to) = @_;
return $converted_price;
};
This method dies if the specified class can not be loaded.
format
Arguments: $options
Gets/sets the format to be used when "as_string" is called. See
Locale::Currency::Format for the available formatting options.
name
Returns the currency name for the current objects currency code. If no
currency code is set the method will die.
stringify
Sames as "as_string".
as_string
Returns the current objects value as a formatted currency string.
value
Returns the original price value given to "new".
get_component_class
Arguments: $name
Gets the current class for the specified component name.
my $class = $self->get_component_class('converter_class');
There is no good reason to use this. Use the specific class accessors
instead.
set_component_class
Arguments: $name, $value
Sets the current class for the specified component name.
$self->set_component_class('converter_class', 'MyCurrencyConverter');
This method will croak if the specified class can not be loaded. There
is no good reason to use this. Use the specific class accessors instead.
SEE ALSO
Locale::Currency, Locale::Currency::Format,
Finance::Currency::Convert::WebserviceX
AUTHOR
Christopher H. Laco
CPAN ID: CLACO
claco@chrislaco.com
http://today.icantfocus.com/blog/