Bonjour,

Je dois parser un fichier CSV et j'ai deux problèmes :

Mon FICIN est sous la forme suivante (csv) :

Nom : ficin.jpg
Affichages : 232
Taille : 145,9 Ko

Mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
for(my $i = 1; $i<$#liste_troisieme_ligne;$i = $i +3){
 
 
 
 
 
if(($liste_troisieme_ligne[$i] !~ m/unknown/)&&($liste_troisieme_ligne[$i-1] !~ m/available/)){
 
			push @liste_ok, $i;
 
 
 
 
 
$all_cours{$instrument2.",".$liste_place[$i-1].",".$liste_troisieme_ligne[$i+1].",".$liste_troisieme_ligne[$i-1]} = $liste_troisieme_ligne[$i];
 
 
 
 
 
		}
 
	}
 
}
 
 
 
print (FICOUT "instrument, place, date, cours, FX\n");
 
 
 
foreach my $ke (sort(keys(%all_cours))){
 
 
 
	print (FICOUT "$ke,$all_cours{$ke}\n");
 
	}
 
 
 
close(FICOUT);
Mon problème est que, quand il arrive au dernier groupe de 3 colonnes mon programme fait un retour chariot dans le FICOUT au mauvaise endroit, c'est à dire après la date. je me retrouve avec le fichier FICOUT suivant :
Nom : ficout.jpg
Affichages : 214
Taille : 19,2 Ko

Mon deuxième problème est qu'il devrait prendre toute les lignes où la date est non vide à partir de la 3ème ligne, or il ne met dans mon FICOUT que la 3ème ligne et pas les lignes suivantes.

Merci d'avance, je suis novice en perl et je n'arrive pas à m'en défaire de ce problème.

victor