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 :

Hash de array affichage


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 198
    Par défaut Hash de array affichage
    Bonjour,

    J'ai deux hash (les deux premiers) que j'ai fusionné avec le module "Hash::Merge" pour obtenir le 3è.

    je souhaite afficher la clé et les valeurs associés mais ca bug quand il n'y a qu'une valeur et non plus. (voir la fin du message)

    Quelqu'un connait il la raison ?

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    print Dumper \%merged;
    		foreach my $cle ( keys %merged ) {
         print "$cle @{ $merged{$cle} }\n";
     }


    $VAR1 = {
    'e055.3dac.9560' => '10.2.99.2',
    '0005.3505.755c' => '10.2.99.7',
    '7c2f.8082.0edb' => '10.2.199.1',
    '2c3e.cf86.da71' => '10.2.199.3',
    '6c99.8984.0610' => '10.2.199.2',
    '3037.a605.a242' => '10.2.199.126',
    '3037.a605.a241' => '10.2.99.252',
    'a0e0.aff0.fec0' => '10.2.199.121',
    '0000.5e00.015b' => '10.2.99.254',
    '28d2.4441.d513' => '10.2.99.13',
    '0025.15ba.3320' => '10.2.99.238',
    '0007.4d3c.caf6' => '10.2.99.170',
    '3037.a605.a243' => '10.2.199.254',
    '0012.efe1.d634' => '10.2.99.237'
    };
    $VAR1 = {
    'a0e0.aff0.fec0' => 'Fa0/5',
    '0000.5e00.015b' => 'Fa0/3',
    '0026.7377.5cf9' => 'Fa0/13',
    '0012.efe1.d634' => 'Fa0/3',
    '28d2.4441.d513' => 'Fa0/9',
    '0025.15ba.3320' => 'Fa0/4',
    '7c2f.8082.0edb' => 'Fa0/7',
    'e055.3dac.9560' => 'Fa0/10',
    '0005.3505.755c' => 'Fa0/16',
    '0003.ea07.f0a0' => 'Fa0/21',
    '6c99.8984.0610' => 'Fa0/19'
    };
    $VAR1 = {
    '7c2f.8082.0edb' => [
    '10.2.199.1',
    'Fa0/7'
    ],
    '0005.3505.755c' => [
    '10.2.99.7',
    'Fa0/16'
    ],
    '3037.a605.a242' => '10.2.199.126',
    '6c99.8984.0610' => [
    '10.2.199.2',
    'Fa0/19'
    ],
    '3037.a605.a241' => '10.2.99.252',
    '0012.efe1.d634' => [
    '10.2.99.237',
    'Fa0/3'
    ],
    '0007.4d3c.caf6' => '10.2.99.170',
    '0025.15ba.3320' => [
    '10.2.99.238',
    'Fa0/4'
    ],
    'e055.3dac.9560' => [
    '10.2.99.2',
    'Fa0/10'
    ],
    '0003.ea07.f0a0' => 'Fa0/21',
    '2c3e.cf86.da71' => '10.2.199.3',
    'a0e0.aff0.fec0' => [
    '10.2.199.121',
    'Fa0/5'
    ],
    '0000.5e00.015b' => [
    '10.2.99.254',
    'Fa0/3'
    ],
    '0026.7377.5cf9' => 'Fa0/13',
    '3037.a605.a243' => '10.2.199.254',
    '28d2.4441.d513' => [
    '10.2.99.13',
    'Fa0/9'
    ]
    };
    7c2f.8082.0edb 10.2.199.1 Fa0/7
    0005.3505.755c 10.2.99.7 Fa0/16
    Can't use string ("10.2.199.126") as an ARRAY ref while "strict refs" in use at test.pl line 46.

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Si tu observes les trois premiers éléments de %merge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $VAR1 = {
    '7c2f.8082.0edb' => [
    '10.2.199.1',
    'Fa0/7'
    ],
    '0005.3505.755c' => [
    '10.2.99.7',
    'Fa0/16'
    ],
    '3037.a605.a242' => '10.2.199.126',
    Tu vois que le troisième n'a pas la même structure: la valeur n'est pas un array ref mais un simple scalaire. Du coup, le déréférencement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @{ $merged{$cle} }
    ne fonctionne pas sur cet élément.

    Il faut probablement tester si ta valeur dans ton hachage est un simple scalaire ou un array ref, et adapter ta syntaxe en conséquence.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 198
    Par défaut
    Merci, pour l'indice

    j'ai remplacé le bout de code

    par
    et ca fonctionne

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    N'ayant pas vu le code dans lequel tu as fait ce changement, je ne peux commenter. Mais il est possible que ça suffise, effectivement.

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

Discussions similaires

  1. hash de array
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 19/08/2011, 14h29
  2. Perl hash => Php array: Module existant?
    Par ssc37 dans le forum Langage
    Réponses: 1
    Dernier message: 10/12/2009, 13h18
  3. Souci entre hash et array
    Par Biiru dans le forum Langage
    Réponses: 1
    Dernier message: 01/05/2007, 18h27
  4. [D7] Tableau associatif (hash, associative array)?
    Par fredtheman dans le forum Delphi
    Réponses: 3
    Dernier message: 21/06/2006, 18h42
  5. [HASH de HASH de ARRAY]
    Par antigone dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2005, 18h01

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