Boucle while dans boucle for - Perl - Programmation
Marsh Posté le 02-09-2012 à 16:29:08
Bon ben pour une fois je viens de trouver une solution en utilisant la fonction seek(A3, 0, 0) qui remet le curseur au début du fichier. Par contre j'ai toujours un warning "Use of uninitialized value in print at ordre_alphabetique.pl line 76, <A3> line 1680." ? En tous cas ça me sort bien le fichier que je voulais
Code :
|
Marsh Posté le 02-09-2012 à 16:39:03
Citation : et je veux classer ces lignes comme ceci (Equipes dans l'ordre alphabétique et dans l'ordre où elles se présentent dans le fichier): |
C'est très simple:
Code :
|
En entrée: teams.txt
1;Marseille ;3;3;0;0;4;0 |
et en sortie:
C:\Perl>perl sortit.pl |
C'est juste une application de la technique indiquée dans mon troisième post du topic trucs et astuces en perl.
EDIT: version amélioirée qui traite un peux mieux les "\n" de fin de ligne:
Code :
|
A+,
Marsh Posté le 02-09-2012 à 18:58:07
Merci Gilou, effectivement en 4 lignes tu fais ce que j'ai fais en 30 lignes, pour de l'optimisation c'est de l'optimisation !! Mais bon même si je code bourrin je progresse quand même.
En tous cas je vais pas me priver de prendre ces 4 lignes à la place des miennes
A+
Marsh Posté le 02-09-2012 à 21:00:05
Faut pas t'inquiéter, on a tous commencé à faire comme tu fais, jusqu'au jour ou on est tombé sur un exemple de cette technique.
A+,
Marsh Posté le 02-09-2012 à 15:39:25
Bonjour,
j'ai un petit souci avec ce script qui doit classer 80 lignes dans l'ordre alphabétique par rapport aux noms des équipes.
J'ai un fichier france1_classements.pl que voilà:
1;Marseille ;3;3;0;0;4;0
2;Lyon ;3;2;1;0;6;2
3;Valenciennes ;3;2;1;0;4;0
4;Toulouse ;3;2;1;0;4;2
5;Bordeaux ;3;2;1;0;4;2
6;Bastia ;3;2;0;1;7;6
7;Lorient ;3;1;2;0;6;5
8;Lille ;3;1;2;0;5;4
9;Nancy ;3;1;1;1;2;2
10;St Etienne ;3;1;0;2;6;4
11;Paris SG ;3;0;3;0;2;2
12;Rennes ;3;1;0;2;3;4
13;Reims ;3;1;0;2;2;3
14;Brest ;3;1;0;2;1;5
15;Nice ;3;0;2;1;2;3
16;Ajaccio ;3;1;1;1;1;3
17;Evian TG ;3;0;1;2;3;5
18;Montpellier ;3;0;1;2;2;4
19;Troyes ;3;0;1;2;3;7
20;Sochaux ;3;0;0;3;2;6
1;Valenciennes ;2;1;1;0;3;0
2;St Etienne ;2;1;0;1;5;2
3;Lyon ;1;1;0;0;4;1
4;Marseille ;1;1;0;0;2;0
5;Lorient ;1;1;0;0;2;1
6;Bastia ;1;1;0;0;2;1
7;Toulouse ;1;1;0;0;2;1
8;Brest ;1;1;0;0;1;0
9;Bordeaux ;1;1;0;0;1;0
10;Rennes ;2;1;0;1;3;3
11;Nancy ;2;1;0;1;1;1
12;Reims ;2;1;0;1;1;1
13;Paris SG ;2;0;2;0;2;2
14;Lille ;1;0;1;0;1;1
15;Ajaccio ;1;0;1;0;0;0
16;Evian TG ;2;0;1;1;3;4
17;Nice ;2;0;1;1;2;3
18;Troyes ;2;0;1;1;2;3
19;Montpellier ;2;0;1;1;1;2
20;Sochaux ;1;0;0;1;2;3
1;Marseille ;2;2;0;0;2;0
2;Lille ;2;1;1;0;4;3
3;Bordeaux ;2;1;1;0;3;2
4;Toulouse ;2;1;1;0;2;1
5;Lyon ;2;1;1;0;2;1
6;Valenciennes ;1;1;0;0;1;0
7;Bastia ;2;1;0;1;5;5
8;Ajaccio ;2;1;0;1;1;3
9;Lorient ;2;0;2;0;4;4
10;Nancy ;1;0;1;0;1;1
11;Nice ;1;0;1;0;0;0
12;Paris SG ;1;0;1;0;0;0
13;St Etienne ;1;0;0;1;1;2
14;Montpellier ;1;0;0;1;1;2
15;Reims ;1;0;0;1;1;2
16;Evian TG ;1;0;0;1;0;1
17;Rennes ;1;0;0;1;0;1
18;Troyes ;1;0;0;1;1;4
19;Sochaux ;2;0;0;2;0;3
20;Brest ;2;0;0;2;0;5
1;Marseille ;3;3;0;0;4;0
2;Lyon ;3;2;1;0;6;2
3;Valenciennes ;3;2;1;0;4;0
4;Toulouse ;3;2;1;0;4;2
5;Bordeaux ;3;2;1;0;4;2
6;Bastia ;3;2;0;1;7;6
7;Lorient ;3;1;2;0;6;5
8;Lille ;3;1;2;0;5;4
9;Nancy ;3;1;1;1;2;2
10;Ajaccio ;3;1;1;1;1;3
11;St Etienne ;3;1;0;2;6;4
12;Paris SG ;3;0;3;0;2;2
13;Rennes ;3;1;0;2;3;4
14;Reims ;3;1;0;2;2;3
15;Brest ;3;1;0;2;1;5
16;Nice ;3;0;2;1;2;3
17;Evian TG ;3;0;1;2;3;5
18;Montpellier ;3;0;1;2;2;4
19;Troyes ;3;0;1;2;3;7
20;Sochaux ;3;0;0;3;2;6
Nombre de lignes: 80
Nombre d'equipes: 20
et je veux classer ces lignes comme ceci (Equipes dans l'ordre alphabétique et dans l'ordre où elles se présentent dans le fichier):
16;Ajaccio ;3;1;1;1;1;3
15;Ajaccio ;1;0;1;0;0;0
8;Ajaccio ;2;1;0;1;1;3
10;Ajaccio ;3;1;1;1;1;3
6;Bastia ;3;2;0;1;7;6
6;Bastia ;1;1;0;0;2;1
7;Bastia ;2;1;0;1;5;5
6;Bastia ;3;2;0;1;7;6
5;Bordeaux ;3;2;1;0;4;2
9;Bordeaux ;1;1;0;0;1;0
3;Bordeaux ;2;1;1;0;3;2
5;Bordeaux ;3;2;1;0;4;2
14;Brest ;3;1;0;2;1;5
8;Brest ;1;1;0;0;1;0
20;Brest ;2;0;0;2;0;5
15;Brest ;3;1;0;2;1;5
...
...
...
...
19;Troyes ;3;0;1;2;3;7
18;Troyes ;2;0;1;1;2;3
18;Troyes ;1;0;0;1;1;4
19;Troyes ;3;0;1;2;3;7
3;Valenciennes ;3;2;1;0;4;0
1;Valenciennes ;2;1;1;0;3;0
6;Valenciennes ;1;1;0;0;1;0
3;Valenciennes ;3;2;1;0;4;0
Voici ce que j'ai fait (La partie de code qui ne fonctionne pas correctement est à partir de la ligne 63 où j'utilise le tableau @OA dans lequel je récupère uniquement les noms des équipes dans l'ordre alphabétique). Quand je le fait fonctionner j'ai un warning "Use of uninitialized value within @OA1 in concatenation (.) or string at ordre_alphabetique.pl line 75, <A3> line 84" et dans mon fichier ordre_alphabetique1.txt j'obtiens uniquement les 4 premières lignes de l'équipe d'Ajaccio et c'est tout !
Je me demande si on a le droit de faire une boucle while de lecture de fichier dans une boucle for ? J'ai l'impression que ma boucle s'arrête et ne relis pas le fichier france1_classements.txt pour $l=1. Qu'est-ce que je fais faux dans cette boucle ? Une idée? Merci.
Message édité par thales69 le 02-09-2012 à 15:41:35