IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Génération d'une hash de hash de tableau


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 48
    Points
    48
    Par défaut [RESOLU]Génération d'une hash de hash de tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    %traces = (
            rep1 => {
                    f1      => ["t1","t2","t3"],
                    f2       => ["t1","t2"],
            },
            rep2     => {
                    f1      => ["t1","t2","t3","t4"],
                    f2      => ["t1","t2"],
                    f3      => ["t1","t2"],
            },
            rep3    => {
                    f1      => ["t1","t2"],
                    f2      => ["t1","t2"],
                    f3      => ["t1","t2"],
            },
     );
    j'essais d'ajouter un element à ma hash


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $traces{"rep4"}{"f1"} =["t1","t2"];
    puis j'affiche le tout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach $repertoire ( keys %traces ) 
    { 
    	print "$repertoire: { ";
    	for $fichier ( keys %{ $traces{$repertoire} } ) 
    	{    print $fichier."=( ";
    	    	foreach $i ( 0 .. $#{ $traces{$repertoire}{$fichier}}   )
     
    	    	{
    	       		print "$traces{$repertoire}{$fichier}[$i], ";
    	       	}
    	    print "}\n";   		
    	}
    	print "}\n";
    }

    ça fonctionne bien ...

    affichage

    rep1{
    f1={t1,t2,t3}
    f2={t1,t2}
    }

    rep2{
    f1={t1,t2,t3,t4}
    f2={t1,t2}
    f3={t1,t2}
    }

    rep3{
    f1={t1,t2}
    f2={t1,t2}
    f3={t1,t2}
    }

    rep4{
    f1={t1,t2}
    }


    Par contre ce code ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my @t=["t1","t2"];
     
    $traces{"rep4"}{"f1"} =[ @t ];
    affichage pour rep4

    rep4{
    f1={ARRAY(0x1a62b68)}
    }


    est ce que quelqu'un peux m'aider?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: Génération d'une hash de hash de tableau
    Citation Envoyé par antigone
    Par contre ce code ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my @t=["t1","t2"];
     
    $traces{"rep4"}{"f1"} =[ @t ];
    affichage pour rep4

    rep4{
    f1={ARRAY(0x1a62b68)}
    }


    est ce que quelqu'un peux m'aider?

    Merci d'avance
    Pourquoi anonymiser deux fois la référence sur la liste ?

    Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $t=["t1","t2"];
    $traces{"rep4"}{"f1"} = $t;
    Et $t est une référence anonyme (pas tant que ça) à la liste ("t1", "t2").

    Soit tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my @t=("t1","t2");
    $traces{"rep4"}{"f1"} = [ @t ];
    Et @t est une liste, que tu prends en référence anonyme pour ranger dans ton hash
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Points : 48
    Points
    48
    Par défaut
    Même en faisant ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my @t;
    $t=["t1","t2"];
     
    $traces{"rep4"}{"f1"} =[ @t ];
    ça fonctionne pas!!

    donc si j'ai bien compris si on initialise un tableau en faisant appelle à sa ref => on ne peux le maanipuler que via sa ref?

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Un tableau n'a pas de ref associée !! C'est à dire que $tab n'a rien à voir avec @tab (ou avec $tab[i] qui est un élément de @tab).

    Donc ton dernier code n'a aucune chance de fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my @t;
    $t=["t1","t2"];
     
    $traces{"rep4"}{"f1"} =[ @t ];
    Ceci initialise un tableau vide @t, puis met une référence au tableau ("t1", "t2") dans $t, et enfin affecte une référence à un tableau contenant les éléments de @t (c'est à dire aucun !) à $traces{rep4}{f1} (les guillemets sont superflus dans les indices de hash).

    Essaye de bien revoir les types de bases de Perl pour t'éclaircir les idées.

    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tri d'un array de hash en fonction d'une valeur du hash
    Par Jasmine80 dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2011, 12h14
  2. Réponses: 3
    Dernier message: 23/06/2009, 16h40
  3. tableau comme valeur dans un hash de hash
    Par king_kunu dans le forum Langage
    Réponses: 2
    Dernier message: 02/01/2006, 16h05
  4. Tableau de hash to hash
    Par shwin dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2005, 14h17
  5. Parcours d'un hash de hash de hash
    Par ngere dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2005, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo