open R1,">$llgg1/semaine_1.txt" or die "E/S: $!\n"; #Fichier FINAL
while ($l = <F1> ) {
@CC = split(/\n/,$l);
#push @TdT, [ @CC ];
push @TdT, [@CC];
}
@tri = sort {$a->[2] cmp $b->[2]} @TdT; # tri selon le champ 2
print R1 "@$_\n" for @tri;
close (F1);close (R1);
}
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 :
for($o = 1; $o <= 4; $o++) {
&TRI();
}
sub TRI {
open F1,"$llgg1/fich$o.txt" or die "E/S: $!\n";
open R1,">$llgg1/semaine_$o.txt" or die "E/S: $!\n"; #Fichier FINAL
while ($l = <F1> ) {
@CC = split(/\n/,$l);
#push @TdT, [ @CC ];
push @TdT, [@CC];
}
@tri = sort {$a->[2] cmp $b->[2]} @TdT; # tri selon le champ 2
print R1 "@$_\n" for @tri;
close (F1);close (R1);
}
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
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
Marsh Posté le 14-02-2009 à 05:44:52
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
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.
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