package WebApp; use base 'CGI::Application'; use strict; use HTML::Template::Compiled; use STARTMODUL; use AMODUL; use BMODUL; use CMODUL; # 1) cgiapp_init wird als erstes ausgeführt sub cgiapp_init {     my $self = shift;     # HTC-Template Rahmenseite     $self->{TEMPLATE} = HTML::Template::Compiled->new (         filename => 'tmpl_rahmen.htm',         path     => '/pfad/tmpl/',         loop_context_vars => 1,         ); } # 2) setup wird als zweites ausgeführt sub setup {     my $self = shift;     $self->start_mode('startseite');     $self->mode_param('rm');     $self->error_mode('startseite');     $self->run_modes(         'AUTOLOAD' => 'startseite',         'a'        => 'sub_a',         'b'        => 'sub_b',         'c'        => 'sub_c',         ); } # 3) cgiapp_prerun wird als drittes ausgeführt sub cgiapp_prerun {     my $self = shift;     # ... } # 4) cgiapp_postrun wird als viertes ausgeführt sub cgiapp_postrun {     my $self = shift;     my $output_ref = shift;     $self->{TEMPLATE}->param(         RUNMODE => $self->get_current_runmode(),         );     $$output_ref = $self->{TEMPLATE}->output(); } sub startseite {     my $self = shift;     $self->STARTMODUL::StartSeite(); } sub sub_a {     my $self = shift;     $self->AMODUL::SeiteA(); } sub sub_b {     my $self = shift;     $self->BMODUL::SeiteB(); } sub sub_c {     my $self = shift;     $self->CMODUL::SeiteC(); } 1;