J'ai une itération de plus sans raison
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 :
Code:
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 |
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:
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
}
} |
Tout semble correct, mais hélas, il prend beaucoup de temps,
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.