Bonjour,
J'ai un fichier source (txt) que je veux nettoyer avec des stoplist figurant dans d'autres fichiers txt : si une ligne de mon fichier pollué correspond à l'une des lignes des stoplist je l'enregistre dans un nouveau fichier (ça me permet de verifier que les futures suppressions sont correctes).
Je dois conserver les stoplists dans des fichiers différents car je ne leur applique pas les mêmes regex.
Pour l'instant, ça donne un truc du genre :
foreach $ligne_source(@fichier_source)
{chomp $ligne_source;
# Je verifie si la ligne figure dans la stopliste n°1 : si oui je l'enregistre dans le fichier "suppr"
foreach $line(@stopliste1)
{chomp $line;
if $ligne_source =~ m/(\b$line\b)/
{print FICHIER_SUPPR $ligne_source,"\n";next;}
}
# Je verifie si la ligne figure dans la stopliste n°2 : si oui je l'enregistre dans le fichier "suppr"
foreach $line(@stopliste2)
{chomp $line;
if $ligne_source =~ m/(\b$line\b)/
{print FICHIER_SUPPR $ligne_source,"\n";next;}
}
etc.
}
Mais je m'aperçois que même si la ligne a déjà été identifiée dans la première stoplist, elle est quand même testée par la deuxième ! J'ai tenté de mettre un next tout à la fin de chaque boucle foreach pour en sortir mais ça ne change rien.
J'ai aussi tenté les elsif (foreach....){}, mais ça ne fonctionne pas non plus
C'est peut-être (sans doute !) la méthode qui est mauvaise, je suis preneuse de vos suggestions.
Merci !
Partager