package Bar; use base qw(CGI::Application); sub useful_method { my $self = shift; # do something useful here } 1; package Foo; use Base qw(Bar); # By inheriting from Bar, we also inherit everything # that Bar inherits, so you don't need to specifically # mention CGI::Application in package Foo, since Bar # deals with that for you sub setup { my $self = shift; $self->run_modes(qw(runmode1 runmode2)); } sub runmode1 { my $self = shift; my $results = $self->useful_method(); ... } 1;