Je cherche à stocker dans une variable la valeur de la variable vers
laquelle pointerait un objet perl (donc une référence), de manière à
pouvoir la récupérer ensuite.
Avec un scalaire, ce n'est pas difficile. Par exemple, je peux référencer le
scalaire et retrouver sa valeur à différents moments en déréférençant
simplement la référence. Mais dès lors que les références sont
hiérarchisées (comme dans un objet perl), je ne vois pas comment faire pour
capturer leur état.
Le but est de pouvoir continuer à travailler avec la référence, mais de
pouvoir également revenir à un état antérieur à la demande (une sorte
d'undo, en fait).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Fri, 21 Oct 2005 17:05:40 +0200, mzi écrivait (wrote):
Je cherche à stocker dans une variable la valeur de la variable vers laquelle pointerait un objet perl (donc une référence), de manière à pouvoir la récupérer ensuite.
Avec un scalaire, ce n'est pas difficile. Par exemple, je peux référencer le scalaire et retrouver sa valeur à différents moments en déréférençant simplement la référence. Mais dès lors que les références sont hiérarchisées (comme dans un objet perl), je ne vois pas comment faire pour capturer leur état.
Le but est de pouvoir continuer à travailler avec la référence, mais de pouvoir également revenir à un état antérieur à la demande (une sorte d'undo, en fait).
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et 'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :
use Storable qw{dclone freeze thaw};
my $obj = ... # création d'un objet (ou d'une structure # arbitrairement complexe).
my $sauve = freeze $obj; # ... my $clone = ${thaw $sauve};
# ou my $clone = ${dclone($obj)};
Ça marche sur la plupart des objets. Les limitiations sont celles liées à Storable.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 21 Oct 2005 17:05:40 +0200,
mzi <mzi@gmail.com> écrivait (wrote):
Je cherche à stocker dans une variable la valeur de la variable vers
laquelle pointerait un objet perl (donc une référence), de manière à
pouvoir la récupérer ensuite.
Avec un scalaire, ce n'est pas difficile. Par exemple, je peux référencer le
scalaire et retrouver sa valeur à différents moments en déréférençant
simplement la référence. Mais dès lors que les références sont
hiérarchisées (comme dans un objet perl), je ne vois pas comment faire pour
capturer leur état.
Le but est de pouvoir continuer à travailler avec la référence, mais de
pouvoir également revenir à un état antérieur à la demande (une sorte
d'undo, en fait).
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et
'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :
use Storable qw{dclone freeze thaw};
my $obj = ... # création d'un objet (ou d'une structure
# arbitrairement complexe).
my $sauve = freeze $obj;
# ...
my $clone = ${thaw $sauve};
# ou
my $clone = ${dclone($obj)};
Ça marche sur la plupart des objets. Les limitiations sont celles
liées à Storable.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Fri, 21 Oct 2005 17:05:40 +0200, mzi écrivait (wrote):
Je cherche à stocker dans une variable la valeur de la variable vers laquelle pointerait un objet perl (donc une référence), de manière à pouvoir la récupérer ensuite.
Avec un scalaire, ce n'est pas difficile. Par exemple, je peux référencer le scalaire et retrouver sa valeur à différents moments en déréférençant simplement la référence. Mais dès lors que les références sont hiérarchisées (comme dans un objet perl), je ne vois pas comment faire pour capturer leur état.
Le but est de pouvoir continuer à travailler avec la référence, mais de pouvoir également revenir à un état antérieur à la demande (une sorte d'undo, en fait).
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et 'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :
use Storable qw{dclone freeze thaw};
my $obj = ... # création d'un objet (ou d'une structure # arbitrairement complexe).
my $sauve = freeze $obj; # ... my $clone = ${thaw $sauve};
# ou my $clone = ${dclone($obj)};
Ça marche sur la plupart des objets. Les limitiations sont celles liées à Storable.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
mzi
Je cherche à stocker dans une variable la valeur de la variable vers laquelle pointerait un objet perl (donc une référence), de manière à pouvoir la récupérer ensuite.
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et 'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :
Merci. Je vais tester ça au plus vite. -- mzi
Je cherche à stocker dans une variable la valeur de la variable vers
laquelle pointerait un objet perl (donc une référence), de manière à
pouvoir la récupérer ensuite.
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et
'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :
Je cherche à stocker dans une variable la valeur de la variable vers laquelle pointerait un objet perl (donc une référence), de manière à pouvoir la récupérer ensuite.
Vous pouvez utiliser le module Storable et ses fonctions 'freeze' et 'thaw' ou celle qui fait les deux opérations d'un seul coup 'dclone' :