Bonjour,
Je dois parser un fichier CSV et j'ai deux problèmes :
Mon FICIN est sous la forme suivante (csv) :
Mon programme :
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 :
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 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
Partager