package Default;
use strict;
sub new {
my $class = shift;
my $self = { };
return bless $self, $class;
}
sub handle {
my ($class, $text) = @_;
return $text;
}
1;
####
package Upper;
use strict;
use Default;
use vars qw(@ISA);
@ISA = qw(Default);
sub handle {
my ($class, $text) = @_;
return uc($text);
}
1;
################################
package Lower;
use strict;
use Default;
use vars qw(@ISA);
@ISA = qw(Default);
sub handle {
my ($class, $text) = @_;
return lc($text);
}
1;
####
#!/usr/bin/perl -w
use strict;
use Default;
use Upper;
use Lower;
my $arg = shift || '';
my %handlers = (
default => Default->new,
upper => Upper->new,
lower => Lower->new,
);
my $ref = $handlers{$arg} || $handlers{'default'};
print $ref->handle("AaAaAaAa"), "\n";