/opt/myapps/-----+ | | | Super.pm | | | /Acmecorp/---+ | | | Login.pm | | | Members.pm | | /var/www/acmecorp/--+ | home.html | /manage/----+ | login.cgi | members.cgi #### package Super; use warnings; use strict; use base 'CGI::Application'; use CGI::Application::Plugin::Redirect; use CGI::Application::Plugin::Session; (my $http_host = $ENV{'HTTP_HOST'}) =~ s/(www.)([a-zA-Z0-9\-\.]+)/$2/; $self->session_config( COOKIE_PARAMS => { -name => 'MY_SESSID', -expires => '+8h', -path => '/', -domain => ".".$http_host, }, SEND_COOKIE => 1, ); #### package Login; use base qw(Super); ****login codes goes here and if successful: ***** $self->session->param( 'member_id' => $member_id ); return $self->redirect('/manage/members.cgi'); # I could pass it with return $self->redirect('/manage/members.cgi?id='.$member_id), but clunkier #### #!/usr/local/bin/perl -T use lib "/opt/myapps/"; use Acmecorp::Members; my $app = Acmecorp::Members->new(); $app->run(); #### package Members; use base qw(Super); my $member_id = $self->session->param( 'member_id' ); **** query the DB with the member's id *****