#!/usr/bin/perl use strict; use warnings; use CGI; my $q = new CGI; my %States = ( Default => \&default_page, Home => \&home_page, ); my $current_screen = $q->param(".State") || "Default"; die "No Screen for $current_screen" unless $States{$current_screen}; while (my ($screen_name, $function) = each %States){ $function->($screen_name eq $current_screen); }