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 :

Remplir/Lire Hash de hash de tableaux


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Par défaut Remplir/Lire Hash de hash de tableaux
    Bonjour,

    J'ai besoin de votre aide concernant le remplissage de hash de hash tableau multidimension.

    Je récupere les informations suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    toto
    toto07 TOTO_07 0
    toto08 TOTO_08 0
    toto05 TOTO_05 1
    toto06 TOTO_06 1
     
    truc
    truc01 TRUC_01 9
    truc02 TRUC_02 9

    Je souhaite avoir quelques choses comme:

    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
    17
    18
    19
    20
     
     
    $refhash =  {
                       toto => {
                                     0 => [
                                              [ toto07, TOTO_07 ] ,
                                              [ toto08, TOTO_08 ]
                                            ] ,
                                     1 => [
                                              [ toto05, TOTO_05 ] ,
                                              [ toto06, TOTO_06 ]
                                            ] 
                                     }
                        truc => {
                                   9 => [
                                              [ truc05, TRUC_05 ] ,
                                              [ truc06, TRUC_06 ]
                                            ] 
                                     }
                        } ;
    Dans mon script perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    foreach (@lines)
    {
         # Je sparse les entrées 
         # nom sera egal à truc ou toto, taille sera egal à 0,1,9
         # name sera egal à truc_xx et rename TRUC_XX 
     
    push @{$refhash->{$nom}->{$taille}} , [$name,$rename] ;
     
    }
     
    print Dumper($refhash) ;
    Ce qui donne les codes suivants :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $VAR1 = {
              'toto' => {
                             '0' => [
                                      [
                                        'toto07',
                                        'TOTO_07'
                                      ],
                                      [
                                        'toto08',
                                        'TOTO_08'
                                      ]
                                    ],
                             '1' => [
                                             [
                                               'toto05',
                                               'TOTO_05'
                                             ],
                                             [
                                               'toto06',
                                               'TOTO_06'
                                             ]
                                           ],
                           },
              'truc' => {
                            '9' => [
                                           [
                                             'truc01',
                                             'TOTO_01'
                                           ],
                                           [
                                             'truc02',
                                             'TOTO_02'
                                           ]
                                         ]
                          }
            };
    Je n'ai pas l'impression que ce que je récupere soit comme je voulais.
    Et puis je n'arrive pas à descendre en profondeur dans les tableaux à deux dimensions.

    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
    17
     
    foreach my $j ( keys %{$refhash} )
    {
            foreach my $k ( keys %{$refhash->{$j}} )
            {
                    print "$j $k \n";
                    if ( ref($refhash->{$j}->{$k}) eq "ARRAY" )
                    {
                            print "Tableau\n";
                            foreach my $v (@{$refhash->{$j}->{$k}})
                            {
                                    print "$v\n";
                            }
                    }
     
            }
    }
    Merci pour votre aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    ce que tu recupere a l'air d'etre bon. Que lui reproche tu ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Par défaut
    bonjour

    tu as raison cela à l'air bon.. par contre, sais tu comment récupérer des valeurs toto et TOTO ?

    Je n'arrive pas à atteindre les valeurs des tableaux de mes hash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    truc => 0 [ 'toto' 'TOTO' ]
    truc => 1 ['toto' 'TOTO' ]
    Merci pour votre aide

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Je ne veux pas dire de bêtise mais est-ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @{$refhash->{$nom}->{$taille}} , [$name,$rename] ;
    ne s'écrirait pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @{$refhash->{$nom}{$taille}} , [$name,$rename] ;
    ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    Arioch, c'est identique en fait: on peut omettre la fleche pour simplifier l'ecriture de structures à plusieurs dimenssions. Mais franchement autant ajoute rla fleche pour mieux comprendre ce qui se passe.

    aikinhdo, en fait dans ton parcours $v est encore une reference de ARRAY, avec les deux elements: my ($name1, $name2) = @$v;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Par défaut
    Merci Pospos,

    Est ce que j'arrive pas à acceder aux champs du tableau ?

    En faisant : Je pensais pouvoir récuperer la valeur "toto07", mais ce n'est pas le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    print $refdisk->{toto}->{0}->[0] ;

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

Discussions similaires

  1. Remplir un hash à partir de deux tableaux
    Par USMC666 dans le forum Langage
    Réponses: 11
    Dernier message: 21/10/2013, 09h36
  2. Lire un hash de hash
    Par Crosser02 dans le forum Langage
    Réponses: 6
    Dernier message: 29/04/2009, 17h25
  3. Réponses: 14
    Dernier message: 05/08/2007, 16h33
  4. Parcours d'un hash de hash de hash
    Par ngere dans le forum Langage
    Réponses: 5
    Dernier message: 06/07/2005, 09h53
  5. [langage] probleme avec un hash de hash
    Par planetevoyage dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2003, 12h55

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