URL: https://linuxfr.org/forums/programmation-perl/posts/cgisession-probleme-de-relecture-de-donnee-avec-datadumper Title: CGI::Session: Probleme de relecture de donnee avec Data::Dumper Authors: lom Date: 2007年10月31日T14:07:18+01:00 Tags: Score: 0 Hello, J'ai un probleme lors de l'utilisation de CGI::Session, lorsque j'essaye de stocker un objet. Apres recherche, j'ai reussi a isoler le probleme. J'ai une classe, de type Md, qui contient une methode param(). Lorsque je dump (data::Dumper) un objet de ce type, et que je restaure avec Safe (qui en gros fait un 'eval' dans un bac a sable), j'obtiens un objet du bon type, mais qui ne contient pas la methode param. Voir le code suivant pour explication: #!/usr/bin/perl use strict; use Data::Dumper; use Safe; package Md; sub new {bless {'plop' => 'coin'}, $_[0]}; sub param {return $_[0]->{$_[1]};} package main; #Object and dump creation my $md = Md->new(); my $dump = Dumper($md); #'eval'ed dump my $mde = eval($dump); print defined $mde ? "Defined" : "undef"; # => print undef, bad #'Safe' evaled dump my $mdr = Safe->new->reval( $dump ); print defined $mdr ? "Defined" : "undef"; # => print defined, good print $mdr->can('param') ? "yes" : "No"; # => print No. Why? Quelqu'un pourrait m'expliquer comment ce fait-il qu'un objet de type Md ne peut pas executer les methodes de Md? Notes: J'ai bien vu qu'en utilisant $Data::Dumper::Terse ou sans 'use strict' il est possible de restaurer l'objet comme je le veux, mais vu que le probleme est cache dans CGI::Session, je ne peux pas utiliser ces methodes. Merci pour vos reponses

AltStyle によって変換されたページ (->オリジナル) /