problème incongru, comme retour d'une fonction je retourne un hash, une
autre fonction reprend cette référence, et selon le cas doit modifier un
champ, mais cette modif de ce champ précis ne doit pas se répercuter sur
le dataset original. J'essaye donc de faire une copie du hash en gardant
les références sur le dataset original, sauf pour 1 champ.
A savoir que les fonctions supérieures qui manipulent ces reférences sur
hash doivent pouvoir manipuler indisctinctement le dataset originel,
seules certaines d'entre elles sont concernées par ce champ (celles
qui visualisent les dataset, pour indiquer qu'un certain dataset
en fait est un alias sur un autre...). Euh j'espère que c'est a peu près
clair :D
Tant que dans le hash il y a des références, ca ne pose pas de prob, par
contre, si la valeur d'un champ est un scalaire, je n'arrive pas a créer
une référence....
j'ai bien essaye $subCase->{$key} = \{$tmpRet->{$key}};
marche pas...
si je mets le tout dans une variable temporaire une copie est crée....
en fait mon prob vient comment spécifier que je veux réupérer du hash une
référence et non une valeur scalaire??
toute aide bienvenue!
--
bboett at inforezo dot u-strasbg dot fr
http://inforezo.u-strasbg.fr/~bboett
==============================================================
Unsolicited commercial email is NOT welcome at this email address
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
root
On Wed, 14 Jan 2004 14:49:09 +0000, bboett wrote:
Salut!
problème incongru, comme retour d'une fonction je retourne un hash, une autre fonction reprend cette référence, et selon le cas doit modifier un champ, mais cette modif de ce champ précis ne doit pas se répercuter sur le dataset original. J'essaye donc de faire une copie du hash en gardant les références sur le dataset original, sauf pour 1 champ. A savoir que les fonctions supérieures qui manipulent ces reférences sur hash doivent pouvoir manipuler indisctinctement le dataset originel, seules certaines d'entre elles sont concernées par ce champ (celles qui visualisent les dataset, pour indiquer qu'un certain dataset en fait est un alias sur un autre...). Euh j'espère que c'est a peu près clair :D
Tant que dans le hash il y a des références, ca ne pose pas de prob, par contre, si la valeur d'un champ est un scalaire, je n'arrive pas a créer une référence....
j'ai bien essaye $subCase->{$key} = {$tmpRet->{$key}}; marche pas... si je mets le tout dans une variable temporaire une copie est crée....
en fait mon prob vient comment spécifier que je veux réupérer du hash une référence et non une valeur scalaire??
Tu as essayé avec $h_ref->{$key} ?
use strict; use warnings;
my $h_ref = { "a" => 1, "b" => 2, "foo" => 3, };
# on prend une reference mais pas la valeur my $ref = $h_ref->{"foo"};
# on change la valeur pointé par la reference $$ref = "bar";
# et la valeur dans le hash d'origine est bien modifié print map { "$_ => $h_ref->{$_}n" } sort keys %{$h_ref};
On obtient donc :
a => 1 b => 2 foo => bar
C'est bien ce que tu voulais faire ?
On Wed, 14 Jan 2004 14:49:09 +0000, bboett wrote:
Salut!
problème incongru, comme retour d'une fonction je retourne un hash, une
autre fonction reprend cette référence, et selon le cas doit modifier un
champ, mais cette modif de ce champ précis ne doit pas se répercuter sur
le dataset original. J'essaye donc de faire une copie du hash en gardant
les références sur le dataset original, sauf pour 1 champ.
A savoir que les fonctions supérieures qui manipulent ces reférences sur
hash doivent pouvoir manipuler indisctinctement le dataset originel,
seules certaines d'entre elles sont concernées par ce champ (celles
qui visualisent les dataset, pour indiquer qu'un certain dataset
en fait est un alias sur un autre...). Euh j'espère que c'est a peu près
clair :D
Tant que dans le hash il y a des références, ca ne pose pas de prob, par
contre, si la valeur d'un champ est un scalaire, je n'arrive pas a créer
une référence....
j'ai bien essaye $subCase->{$key} = {$tmpRet->{$key}};
marche pas...
si je mets le tout dans une variable temporaire une copie est crée....
en fait mon prob vient comment spécifier que je veux réupérer du hash une
référence et non une valeur scalaire??
Tu as essayé avec $h_ref->{$key} ?
use strict;
use warnings;
my $h_ref = {
"a" => 1,
"b" => 2,
"foo" => 3,
};
# on prend une reference mais pas la valeur
my $ref = $h_ref->{"foo"};
# on change la valeur pointé par la reference
$$ref = "bar";
# et la valeur dans le hash d'origine est bien modifié
print map { "$_ => $h_ref->{$_}n" } sort keys %{$h_ref};
problème incongru, comme retour d'une fonction je retourne un hash, une autre fonction reprend cette référence, et selon le cas doit modifier un champ, mais cette modif de ce champ précis ne doit pas se répercuter sur le dataset original. J'essaye donc de faire une copie du hash en gardant les références sur le dataset original, sauf pour 1 champ. A savoir que les fonctions supérieures qui manipulent ces reférences sur hash doivent pouvoir manipuler indisctinctement le dataset originel, seules certaines d'entre elles sont concernées par ce champ (celles qui visualisent les dataset, pour indiquer qu'un certain dataset en fait est un alias sur un autre...). Euh j'espère que c'est a peu près clair :D
Tant que dans le hash il y a des références, ca ne pose pas de prob, par contre, si la valeur d'un champ est un scalaire, je n'arrive pas a créer une référence....
j'ai bien essaye $subCase->{$key} = {$tmpRet->{$key}}; marche pas... si je mets le tout dans une variable temporaire une copie est crée....
en fait mon prob vient comment spécifier que je veux réupérer du hash une référence et non une valeur scalaire??
Tu as essayé avec $h_ref->{$key} ?
use strict; use warnings;
my $h_ref = { "a" => 1, "b" => 2, "foo" => 3, };
# on prend une reference mais pas la valeur my $ref = $h_ref->{"foo"};
# on change la valeur pointé par la reference $$ref = "bar";
# et la valeur dans le hash d'origine est bien modifié print map { "$_ => $h_ref->{$_}n" } sort keys %{$h_ref};