Hallo,
ich arbeite mit CGI::Session und wuerde gerne ein Objekt in der Session speichern. Leider scheint er dann zum Teil die Objektinformationen zu verlieren, so dass ich spaeter nicht auf methoden des Objekts zu greifen kann.
ich habe in einem perl script folgenden Code:
use strict;
use CGI::Session;
use GO::Parser;
my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp/user'});
print $session->header();
my $parser = new GO::Parser({handler=>'obj'}); # create parser object
$parser->parse("anatomy.obo"); # parse file -> objects
my $graph = $parser->handler->graph; # get L<GO::Model::Graph> objec
$session->param('graph', $graph);
my $roots = $graph->get_top_nodes();
das funktioniert alles, die untere methode wird aufgerufen und laeuft ohne fehler durch.
in einem weiteren script habe ich dann folgendes
use strict;
use CGI;
use CGI::Session;
my $anfrage = CGI->new();
my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp/user/'});
my $node = $anfrage->param('node');
my $graph = $session->param('graph');
print $session->header(),
$anfrage->start_html("Hello world"),
$anfrage->h3("You selected node $node"),
$anfrage->p($graph->get_top_nodes());
$anfrage->end_html();
und hier meldet mir dann mein apache
QuoteCan't locate object method "get_top_nodes" via package "GO::Model::Graph"
d.h. hier hat er die Informationen ueber das Objekt verloren, obwohl er noch weiss zu welcher Klasse es gehoert. Auch durch
use GO::Model::Graph im 2. script aendert sich nix.
Fueg ich einen einfachen string zb "Hallo" in die session ein, so wird dieser richtigerweise im 2. script angezeigt.
Wie kann ich komplexere Objekte in eine Session hinzufuegen ?
Danke euch vielmals !