in reply to CGI::Session problems

I tried testing your code, but I couldn't for the life me get CGI::Session working - however, I did get CGI::kSession working, and I pasted some code below. From what I can tell, your logic works and is good, and I would therefore assume that the issue lies in the module's usage. You might want to check this one out - it's clean an simple... (haven't looked at the actual .pm code, though...)
#!/usr/local/bin/perl

use strict;
use CGI;
use CGI::kSession;

my $cgi = new CGI;
print $cgi->header;
print $cgi->start_html();

my $s = new CGI::kSession(lifetime=>10,path=>"/tmp/",id=>'test');
$s->start();
$s->register("name") unless $s->is_registered("name");
$s->register("age") unless $s->is_registered("age");

if ($cgi->param("name")) {
        $s->set("name", $cgi->param("name"));
        $s->set("age", $cgi->param("age"));
        &add_age();
} elsif ($cgi->param('test')) {
        &add_age();
} else {
        print $cgi->start_form,
                "Name: ",
                $cgi->textfield("name"),
                "Age: ",
                $cgi->textfield("age"),
                $cgi->p,
                $cgi->submit('Next'), " ",
                $cgi->defaults("Clear"),
                $cgi->end_form;
}

print $cgi->end_html();

sub add_age {
        my $age = $s->get("age");
        my $name = $s->get("name");
        $age++;
        print $name, "\'s new age is $age";
        $s->set("age", $age);
        #$s->set("name", $name);
        print $cgi->start_form,
                $cgi->hidden(-name=>'test', -value=>'test'),
                $cgi->submit('Next'),
                $cgi->end_form;
}

1;