Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1781 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  parcourir un hash de hash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parcourir un hash de hash

n°2390373
isanaud
Posté le 09-07-2021 à 16:23:54  profilanswer
 

J'obtiens cette erreur à l'exécution du script ci dessous
 
Quelle esst l'erreur dans le parcours du hash imbriqué ?
 
Reference found where even-sized list expected at ./test.pl line 20.
Use of uninitialized value $dossier in concatenation (.) or string at ./test.pl line 40.
Use of uninitialized value $dossier in concatenation (.) or string at ./test.pl line 41.
Use of uninitialized value $dossier in concatenation (.) or string at ./test.pl line 42.
Use of uninitialized value $specialite in concatenation (.) or string at ./test.pl line 42.
Use of uninitialized value $annee in concatenation (.) or string at ./test.pl line 42.
traitement do dossier  pour la specialite et l'annee

 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use File::Glob ':globally';
  5. use File::Basename;
  6. use File::stat;
  7. use XML::LibXML;
  8. use utf8;
  9. use MIME::Lite;
  10. my $dossier;
  11. my $repTraitement;
  12. my $repTraite;
  13. my $specialite;
  14. my $annee;
  15. my $repPrincipal = "/export/share/current/TEST-STAGE-ESIR/";
  16. my %lescursus = {Informatique1 => {
  17.                         dossier => "Informatique-1",
  18.                         specialite => "Informatique",
  19.                         annee => "Esir1" },
  20.               Materiaux2 => {
  21.                         dossier => "Materiaux-2",
  22.                         specialite => "Materiaux",
  23.                         annee => "Esir2" },
  24.               TNR3 => {
  25.                         dossier => "TNR-3",
  26.                         specialite => "TNR",
  27.                         annee =>  "Esir3"}
  28.         };
  29. foreach my $cursus(keys(%lescursus)) {
  30.         $dossier=$lescursus{$cursus}{'dossier'};
  31.         $specialite=$lescursus{$cursus}{'specialite'};
  32.         $annee=$lescursus{$cursus}{'annee'};
  33.         $repTraitement= $repPrincipal."/".$dossier."/A_TRAITER/";
  34.         $repTraite= $repPrincipal."/".$dossier;
  35.         print "traitement do dossier $dossier pour la specialité $specialite et l\'annee $annee\n";
  36.         #$identifiantDocument = obtenirListeFichiers($repTraitement, $identifiantDocument);
  37.         }

mood
Publicité
Posté le 09-07-2021 à 16:23:54  profilanswer
 

n°2390394
rat de com​bat
attention rongeur méchant!
Posté le 09-07-2021 à 19:39:01  profilanswer
 

Bonjour,

 

Tiens, y a encore des gens qui vont du Perl5...

 

Tu devrais lire les messages d'erreurs / warnings depuis le début:
>Reference found where even-sized list expected at test.pl line 15.

 

En effet, il faut mettre des parenthèses, pas des accolades. Un hash s'initialise avec une liste.

 

>my %lescursus = ( Informatique1 => {...}, ... )


Message édité par rat de combat le 09-07-2021 à 19:39:18
n°2390422
isanaud
Posté le 10-07-2021 à 12:34:38  profilanswer
 

ca marche, merci beaucoup  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  parcourir un hash de hash

 

Sujets relatifs
résoluSupprimer derniere ligne d'un fichier SANS le parcourir
une erreur l'array , hash-tableaucréation d'un bouton parcourir
création d'un bouton parcourirParcourir une liste avec iterator
construire un hash pour chaque ligneMail avec piece jointe fontion parcourir
parcourir tableau via une urlfonction parcourir des dossiers
Plus de sujets relatifs à : parcourir un hash de hash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR