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

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL]probleme avec boucle For

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL]probleme avec boucle For

n°1851095
snufx
Posté le 14-02-2009 à 05:44:52  profilanswer
 

Bonjour j'ai un soucis avec une boucle For
 
Mon soucis est que je possede plusieurs fichiers representant chaque semaine de l'annee dans lequel j’essai de faire un tri.
 
fich1 contenant
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,20 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,1 10,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,10 2,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
fich2 contenant
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,20 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,1 10,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,10 2,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
 
fich3 contenant
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,20 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,1 10,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,10 2,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
 

Code :
  1. sub TRI {
  2. open F1,"$llgg1/fich1.txt" or die "E/S: $!\n";
  3. open R1,">$llgg1/semaine_1.txt" or die "E/S: $!\n";  #Fichier FINAL
  4.     while ($l = <F1> ) {
  5.         @CC = split(/\n/,$l);
  6.        
  7.         #push @TdT, [ @CC ];
  8.         push @TdT,  [@CC];
  9.            }   
  10. @tri = sort {$a->[2] cmp $b->[2]} @TdT; # tri selon le champ 2
  11. print R1 "@$_\n" for @tri;
  12. close (F1);close (R1);
  13. }


Jusque la tous ce passe bien et j'obtient le fichier semaine_1.txt trier dans l'ordre croissant pour la semaine 1
Pour me faciliter la tache je mets une boucle For a ma fonction qui grace au scalaire $o me permait de traiter chaque semaine.

Code :
  1. for($o = 1; $o <= 4; $o++) {
  2. &TRI();
  3. }
  4. sub TRI {
  5. open F1,"$llgg1/fich$o.txt" or die "E/S: $!\n";
  6. open R1,">$llgg1/semaine_$o.txt" or die "E/S: $!\n";  #Fichier FINAL
  7.     while ($l = <F1> ) {
  8.         @CC = split(/\n/,$l);
  9.        
  10.         #push @TdT, [ @CC ];
  11.         push @TdT,  [@CC];
  12.            }   
  13. @tri = sort {$a->[2] cmp $b->[2]} @TdT; # tri selon le champ 2
  14. print R1 "@$_\n" for @tri;
  15. close (F1);close (R1);
  16. }


 
C'est la que je ne comprends plus rien le 1er sort bien mais les autres c’est la cata…
$llgg1/semaine_$1.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
mais les fichiers suivant :
$llgg1/semaine_$2.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
$llgg1/semaine_$3.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
 
Alors que le resultat attendu serait
$llgg1/semaine_$1.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 1
 
$llgg1/semaine_$2.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 2
 
$llgg1/semaine_$3.txt
df,x,9 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
df,x,30 16,1000 ,dqsldq,,,,jdhdj,hgdhd,semaine 3
 
Pouvez vous m’aider je ne vois pas comment utiliser la boucle correctement


Message édité par snufx le 14-02-2009 à 11:33:01
mood
Publicité
Posté le 14-02-2009 à 05:44:52  profilanswer
 

n°1851115
Taz
bisounours-codeur
Posté le 14-02-2009 à 10:32:45  profilanswer
 

#  while ($l = <F1> ) {
#         @CC = split(/\n/,$l);
 
 
=> y a rien a splitter, t'as lu qu'une ligne.
 
par contre, si tu splittais sur /,/ ...


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

  [PERL]probleme avec boucle For

 

Sujets relatifs
Probleme 1and1 et Asido ..?CSS problème de roll over en couleur ....
Problème placement de boite en CSS[Resolu] Problème de synchronisation des données !
[ASM-Nasm] Problème de comparaison nombreProblème avec If et Case dans VBA...
Probleme sur Eclipse[PHP] Problème Array : test de valeurs negatives de suite
[RESOLU] [PHP/MYSQL] Problème d'exécution de requete imbriquéprobleme de control par gotoandstop sur une anim.swf
Plus de sujets relatifs à : [PERL]probleme avec boucle For


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