my $q = new CGI; my %States = ( 'Default' => \&index, 'Index' => \&index, 'Save' => \&save, 'Etc' => \&etc, ); # Query for the value of ".State" as passed by the POST # Method my $current_screen = $q->param(".State") || "Default"; die "No Screen for $current_screen" unless $States{$current_screen}; # iterate through values in %States for active page while (my ($screen_name, $function) = each %States){ $function->($screen_name eq $current_screen); } #generate pages based on sub called sub index { my $active = shift; return unless $active; do_stuff(); } #### #### PerlRequire /var/www/Index.pm SetHandler perl-script PerlHandler Index PerlSendHeader On Allow from all PerlRequire /var/www/Save.pm SetHandler perl-script PerlHandler save PerlSendHeader On Allow from all PerlRequire /var/www/Etc.pm SetHandler perl-script PerlHandler Etc PerlSendHeader On Allow from all