[% IF msg == 'success' %]

You were successful.

[% ELSE %] [% msg IF msg %] ... show the form because something went wrong ... [% END %] #### $self->run_modes( 'default' => 'default',\ 'create_database' => 'database_action', 'add_record' => 'database_action', 'delete_records' => 'database_action', 'modify_record' => 'database_action', 'other_run_mode' => 'other_sub', ); #### sub database_action { my $self = shift; my $q = $self->query(); my $me = "$self->database_action()"; # Used in result messages for debugging my @page = split('\.', $q->param('page')); # Resource requested, for example, page='section.inventory.add_record' my $database_name = $page[$#page - 1]; # The second-last page element is the database my $database_action = $page[$#page]; # The resource as well as the method # Do some things here relating to the run mode my $pkg = "My::SomePath::$database_name"; eval "require $pkg;"; if ($@) { $result = "

$me: Failed to require $pkg.

\$\@ says: $@ and
\$! says: $! and
\$result: $result

"; } my $method_call = "$pkg->${database_action}(\$self)"; $result .= eval "$method_call;"; if ($@) { $result .= "

$me: $method_call failed.

\$\@ says: $@ and
\$! says: $! and
\$result is: $result

"; } my $output .= My::CGIOut->build_page($self, $result); # Process the template return $output; } ##
## sub do_some_database_action { my $self = shift; my $cgi_app = shift; my $q = $cgi_app -> query(); my $session = $cgi_app->param('session'); my $result = ''; my $me = "$self->do_some_some_database_action()"; # Used in result messages for debugging #--------------------------------------------------------------------------- # Do Something with query parameters like Data::FormValidator #--------------------------------------------------------------------------- my $result = My::OtherModule->validate_something($cgi_app); return $result if ($result); #--------------------------------------------------------------------------- # Do Something if successful #--------------------------------------------------------------------------- #--------------------------------------------------------------------------- # Finish up #--------------------------------------------------------------------------- $result = 'success' if (!$result); return $result; }