sub setup { my $self = shift; tie %session, 'Apache::Session', $self->query->cookie('session_id'); $self->param('session', \%session); # etc. } sub current_run_mode { my $self = shift; # etc. my $uid = $self->param('session')->{uid}; # etc. } #### my $uid = $self->session->uid; #### sub setup { my $self = shift; tie %session, 'Apache::Session', $self->query->cookie('session_id'); $self->composite_object( name => 'session', object => tied(%session)); # etc. } #### sub AUTOLOAD { my $self = shift; my $attribute = $AUTOLOAD; $method =~ s/.*:://; if ( length($method) != 0 ) { if ( @_ > 1) { return $self->STORE($attribute, @_); } else { return $self->FETCH($attribute); } } else { croak "No such object attribute referenced by name '" . $attribute . ' to provide "; } } #### sub AUTOLOAD { my $self = shift; my $attribute = $AUTOLOAD; $method =~ s/.*:://; my %session = Foo($self); if ( @_ > 1) { return $session{$attribute} = $_[0]; } else { return $session{$attribute}; } }