package Page; use HTML::Template; sub new { my $class = shift; my $self = {}; bless $self, $class; $self->setTemplate('default.tmpl'); return $self; } sub setTemplate { my $self = shift; my $file = shift; # You really should validate the template filename here. $self{template} = HTML::Template->new(filename => $file); } sub template { my $self = shift; return $self->{template}; } sub output { my $self = shift; return $selft->template->output; } 1;