$next_page->render; #### sub activate { my $self = shift; eval { $self->prototype_enter; $self->app_enter; my $this_page = $self->dispatch; $this_page->control_enter; $this_page->respond_enter; my $next_page = $this_page->respond; $this_page->respond_leave; if ($this_page ne $next_page) { $this_page->control_leave; $next_page->control_enter; } $next_page->render_enter; $next_page->render; $next_page->render_leave; $next_page->control_leave; $self->app_leave; $self->prototype_leave; }; $self->error($@) if $@; # failed something, go to safe mode } #### ->render #### package Gimble::Page::Login::Base; use base qw(Gimble::Page::Base); sub engine { my ($self,$tree) = @_; $self->snip_validate($tree); $tree } sub template { require html::login; html::login->new } 1;