Math::Calc::Euro - convert between EUR and the old currencies


Math-Calc-Euro documentation Contained in the Math-Calc-Euro distribution.

Index


Code Index:

NAME

Top

Math::Calc::Euro - convert between EUR and the old currencies

SYNOPSIS

Top

    my $guildercalc = Math::Calc::Euro->new('NLG')
    print $guildercalc->to_euro(1), "\n"; # 0.45378...
    print $guildercalc->from_national(1), "\n"; # same
    print $guildercalc->to_national(1), "\n"; # 2.20371
    print $guildercalc->from_euro(1), "\n"; # same

DESCRIPTION

Top

The Math::Calc::Euro module provides for an object oriented interface for converting to/from EUR.

new / clone

Takes one argument: the currency. Either one of these: LUF ATS BEF NLG FIM FRF DEM GRD IEP ITL PTE ESP or a number indicating how much the national currency is worth in euro's. When used as an object method, it defaults to the object's rate.

to_euro / from_national

Returns the value in euro's. Takes one argument: the amount of money.

to_national / from_euro

Returns the value in the old currency. Takes one argument: the amount of euro's.

KNOWN BUGS

Top

None yet

AUTHOR

Top

Juerd <juerd@juerd.nl>


Math-Calc-Euro documentation Contained in the Math-Calc-Euro distribution.

package Math::Calc::Euro;
use strict;
use Carp;

use vars '$VERSION';
$VERSION = 0.02;

my %rates = qw(	LUF 40.3399	ATS 13.76	BEF 40.3399
		NLG 2.20371	FIM 5.94574	FRF 6.55957
		DEM 1.94483	GRD 340.75	IEP 0.787564
		ITL 1936.27	PTE 200.482	ESP 166.386 );

sub new {
    my ($proto, $currency) = @_;
    my $rate = defined $currency && (
		   $rates{uc $currency} || 0 + $currency
	       ) ||
	       ( ref $proto eq __PACKAGE__ ?
	           $$proto
	       :
	           croak("Invalid currency")
	       );
    return bless \$rate, ref($proto) || $proto;
}

sub to_euro {
    my ($self, $amount) = @_;
    return $amount / $$self;
}

sub to_national {
    my ($self, $amount) = @_;
    return $amount * $$self;
}

sub from_euro { goto &to_national }
sub from_national { goto &to_euro }
sub clone { goto &new }
1;

__END__