#!C:/Perl/bin/perl.exe # index.cgi use strict; use warnings; use Auto; my $app = Auto->new(PARAMS => {my_param => 'some val'}); $app->run; #### package Auto; use strict; use warnings; use base 'CGI::Application'; use Start; sub setup { my ($self) = @_; $self->start_mode('start'); $self->run_modes(start => 'start'); } sub start { my ($self) = @_; my $start = Start->new; return $start->output; } 1; #### package Start; use strict; use warnings; sub new { my ($this) = @_; my $self = { #stuff }; bless $self, $this; } sub output { my ($self) = @_; my $query = # CGI::App's $self->query? my $param = # CGI::App's $self->param('my_param')? # do stuff return $output; } 1;