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 :

loop dans hash


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut loop dans hash
    bonjour,

    j'ai un petit soucis,

    j'ai le contenu d'une sous valeur d'un hash : $destination->{file}

    qui vaut (si je fais un print Dumper($destination->{file})

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $VAR1 = {
              'c.txt' => {
                           'remotefolder' => '/tmp/test3'
                         },
              'a.txt' => {
                           'remotefolder' => '/tmp/test1'
                         },
              'b.txt' => {
                           'remotefolder' => '/tmp/test2'
                         }
            };
    comment puis-je faire un loop qui lit pour chaque "file" (a.txt, b.txt) le remotefolder ? (et le file, j'ai besoin d'utiliser les deux variables pour faire des actions)

    j'ai testé pas mal de choses mais pas encore trouvé comment faire le truc

    merci à vous

    amicalement

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach my $nom_fichier ( keys %{ $destination->{file} } ) {
    	print $destination->{file}{$nom_fichier}{remotefolder},"\n";
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut
    excellent merci beaucoup je test de suite,
    j'avais testé avec $destination->{file}->{$nom_fichier}->{remotefolder}
    mais ça ne fonctionait pas

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut
    merci ça marche au poil

    maintenant je dois trouver comment le faire fonctionner lorsqu'il n'y a qu'une seule entrée.

    avec un seul fichier, le hash ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $VAR1 = {
              'remotefolder' => '/tmp/test1',
              'name' => 'a.txt'
            };
    et du coup la boucle ne fonctionne pas

    (en fait ça vient d'un XML avec des entrées du genre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <file name="a.txt" remotepath="/toto"/>
    <file name="b.txt" remotepath="/toto"/>

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Analyse ton XML avec XML::Twig au lieu de XML::Simple !

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur Systèmes
    Inscrit en
    Août 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Monaco

    Informations professionnelles :
    Activité : Ingénieur Systèmes
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 75
    Par défaut
    erf j'aimerais bien mais je devrais refaire tout mon code qui est assez gros maintenant

    j'ai trouvé une solution avec un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (!defined($destination->{file}->{name})) {
      # plusieurs entrées
      foreach my $ftpfilename ( keys %{ $destination->{file} } ) {
         print $destination->{file}{$ftpfilename}{remotefolder}, "\n";
      }
    } else {
      # une seule entrée
      print $destination->{file}->{remotefolder}, "\n";
    }

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

Discussions similaires

  1. faire un loop dans une fonction pipelined
    Par fatsora dans le forum Oracle
    Réponses: 4
    Dernier message: 28/03/2008, 16h42
  2. Réponses: 4
    Dernier message: 31/08/2007, 17h28
  3. loop dans recordset sqlserver
    Par faamugol dans le forum ASP
    Réponses: 1
    Dernier message: 01/08/2006, 17h52
  4. Substitution variables dans hash
    Par Jeh dans le forum Langage
    Réponses: 9
    Dernier message: 16/06/2006, 15h22
  5. Problème de récupération de tableau dans hash DBM
    Par siaoly dans le forum Langage
    Réponses: 1
    Dernier message: 01/05/2006, 16h00

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