$self->run_modes( start => sub { shift->_runmode('start'); }, middle => sub { shift->_runmode('middle'); }, end => sub { shift->_runmode('end'); }, ); # ... sub _runmode { my $self = shift; my $html = shift; my $dbh = $self->param('dbh'); #.... my $tmpl_sub = $self->load_tmpl($html . '.phtml'); #... }