our $TaxRate = 0.20;
sub add_tax {
my ($price) = @_;
return $price * (1 + $TaxRate);
}
print add_tax(50.00), "\n";
# Let's swap to a country with a lower tax rate
$TaxRate = 0.15;
print add_tax(50.00), "\n";
####
sub add_tax {
my ($price, $TaxRate) = @_;
return $price * (1 + $TaxRate);
}
print add_tax(50.00, 0.20), "\n";
print add_tax(50.00, 0.15), "\n";
####
{
package Tax::Zone;
sub new {
my $class = shift;
my $rate = $_[0];
bless \$rate, $class;
}
sub add_tax {
my $self = shift;
my $price = $_[0];
return $price * (1 + $$self);
}
}
my $fooland = Tax::Zone->new(0.20);
print $fooland->add_tax(50.00), "\n";
my $barland = Tax::Zone->new(0.15);
print $barland->add_tax(50.00), "\n";