Bonjour,
Mon script permet de parser un fichier CSV afin d'extraire des données et les mettre dans un hash,
Je suis arrivé au point ou je donne le chemin du fichier et je le parse correctement sans problème :
Jusqu'ici tout va bien, mais je n'ai pas un seul fichier, j'ai une centaine de fichier, donc je dois les parser tous un par un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $file = '/mon_repertoire/sous_rep/fichier.csv'; open (F, $file) || die ("Could not open $file!"); while ($line = <F>) { #traitement } Affichage du résultat
Tout semble correct, mais hélas, il prend beaucoup de temps,
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 my @all_csv =`find /mon_repertoire/sous_rep/ -name "*.csv"`; if (not (@all_csv)) { print("Nothing found... \n"); } else { foreach my $file (@all_csv) { open (F, $file) || die ("Could not open $file!"); while ($line = <F>) { #exactement le même traitement à la lettre } Affichage du résultat } }
j'ai alors mis un seul fichier dans le dossier et essayer le script avec les deux façon en intoduisant une variable $i et l'affichant dans les deux cas, le deuxième cas parsait le fichier une première fois pour rien, et ne remplissait pas le hash, et c'est après que les hash sont remplis, alors que pour le premier, il fonctionne nikel,
à titre indicatif, j'ai deux hashs, le premiers est ce dont j'ai besoin d'afficher, et le deuxième et pour éviter de traiter un ligne contenant (key & valeur) déjà traité, comme j'ai dit pour le deuxième script, il ne les rempli qu’après tout une itération sur le fichier (contenant plus de 5000 lignes) pour rien,
Merci de m'aider.
Partager