package Common; use strict; use CGI::Session; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw($session); our $session; 1; package Login, use Common qw($session); $session = new CGI::Session('driver:File', undef, { Directory=>'/sessions' }); # $self holds user information passed from another sub $session->param('USER', { username => $self->{username}, last_logged => $self->{last_logged}, } $session->flush; print $session->header(-location=>"/index.pl"); 1; # index.pl use Common qw($session); use Main.pm use Login.pm $session = CGI::Session->load("driver:File", undef, { Directory=>'/sessions' }); my $query = get_param('page') || 'main'; #probe($query); my %nodes = ( main => \&main, login => \&login, _err => \&error, ); eval { $nodes{ exists $nodes{$query} ? $query : '_err' }(); }; package Main, use Common qw($session); # the same $session is used in this module 1;