Bonjour à tous ,
J'ai un petit problème étonnant (en tout cas, moi ça m'étonne ) sur un programme que je suis en train d'écrire. Je souhaite remplacer une série de mots dans un fichier, en sortie d'OCRisation imparfaite. J'utilise pour ça du Regex ULTRA basique.
J'ai créer mon programme et la liste des mots à modifier. Malheureusement, le programme ne corrige que la première erreur rencontrée. Si d'autres mots se trouvent à corriger la première correction, c'est comme s'il ne les voyait pas. Le code ressemble à ça :
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 ################ ### DEBUT ### ################ #!/usr/local/bin/perl use POSIX; use CGI qw/:all /; use UTF8; my @blocfinal; $mode = '>'; ###### # GO # ###### open (FICH, "test.txt") || die ("pas de fichier html dans le répertoire\n"); while ($ligne = <FICH>) { $ligne =~ s/ viiieis / vineis /; # ici suit une liste interminable de remplacements de ce genre push @blocfinal, $ligne; } close (FICH); ############################# # ECRITURE DU FICHIER FINAL # ############################# open(OUT, $mode, "out.txt") or die("open: $!"); print OUT @blocfinal; close (OUT);
Maintenant si j'applique ça sur un fichier contenant :
J'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 De viiieis sancti petri viiieis ......de cragia, test viiieis test
Alors que je voudrais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 De vineis sancti petri viiieis ......de cragia, test viiieis test
S'il vous plaît, est-ce que quelqu'un aurait une idée pour me sortir de ce mauvais pas ? Je suppose que cela a quelque chose à voir avec ma manière de lire le fichier (while ; $ligne ; etc.). Ou peut-être dans mon RegEx faut-il spécifier quelque part le besoin d'itération ($ligne =~ s/ viiieis / vineis /;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 De vineis sancti petri viiieis ......de cragia, test vineis test
) ?
En vous remerciant pour toute réponse.
Cordialement.
Partager