1 #!usr/bin/perl
2
3
4
5
6
7 use strict;
8 use warnings;
9 use 5.014;
10 use Switch;
11 use Encode;
12 use Data::Dumper;
13
14
15
16 say "_"x20;
17 die "\nPour $0 syntaxe correcte : perl $0 nom_repertoire (le nom de dossier doit être un encodage)" unless @ARGV == 1;
18 my $dossier=$ARGV[0];
19 my $encodage = "$dossier";
20 $encodage=~ s/.*?\/(.*?)/$1/g;
21 say $encodage;
22
23 my @tabUtf8=("utf8","utf-8","UTF8","UTF-8");
24 my $iso="iso-8859-1";
25 my $utf8="utf8";
26 my $case;
27 my $saveName;
28
29 foreach my $cell (@tabUtf8)
30 {
31 if ($cell eq $encodage)
32 {
33 $case=1;
34 system ("rm -rf ./RESULTAT_EXTRACTION/RECODE_ISO");
35 system("rm -rf ./RESULTAT_EXTRACTION/treetagger/utf8");
36 mkdir ("./RESULTAT_EXTRACTION/RECODE_ISO");
37 }
38 }
39 if ($encodage eq $iso)
40 {
41 $case=2;
42 system ("rm -rf ./RESULTAT_EXTRACTION/RECODE_UTF8");
43 system("rm -rf ./RESULTAT_EXTRACTION/treetagger/recodeIso");
44 mkdir ("./RESULTAT_EXTRACTION/RECODE_UTF8");
45 }
46 switch ($case)
47 {
48 case 1{parcours($dossier)}
49 case 2{parcours($dossier)}
50 else {say "nom de dossier invalide"}
51 }
52
53
54 sub parcours
55 {
56 my ($dossierEnCours)=@_;
57 opendir (my $D, $dossierEnCours) or die "Erreur d'ouverture de dossier type : $!";
58 foreach my $x (readdir ($D))
59 {
60 $saveName=$x;
61 $x=$dossierEnCours."/".$x;
62 next if $x=~ /^\.|\.\.?$/;
63 if (-d $x)
64 {
65 parcours($x);
66 }
67 elsif (-f $x)
68 {
69 detecteTXT($x);
70 }
71 }
72 closedir $D;
73 }
74
75 sub detecteTXT
76 {
77 my ($fichier)=@_;
78 if (!($fichier=~ m/.*?xmlrss.*?txt$/))
79 {
80
81 if($fichier=~ m/txt$/)
82 {
83 nomChemin($fichier);
84 }
85 }
86 }
87
88 sub nomChemin
89 {
90 my ($chemin)=@_;
91 my $rubrique;
92 my $fichier;
93 if ($case==1)
94 {
95 $chemin=~ s/utf8/UTF-8/g;
96 $chemin=~ s/utf8/UTF-8/g;
97 $chemin=~ s/utf-8/UTF-8/g;
98 $chemin=~ s/UTF8/UTF-8/g;
99 while ($chemin=~ m/.*UTF-8.(.*?).(0,.*txt)$/g)
100 {
101 $rubrique=$1;
102 $fichier=$2;
103 recode($chemin,$rubrique,$fichier);
104 }
105 }
106
107 if ($case==2)
108 {
109 while ($chemin=~ m/.*$iso.(.*?).(0,.*txt)$/g)
110 {
111 $rubrique=$1;
112 $fichier=$2;
113 recode($chemin,$rubrique,$fichier);
114 }
115 }
116
117 }
118
119 sub recode
120 {
121 my %hashUtf8=(
122 "\x{0153}"=>"œ",
123 "\x{0140}"=>"ŀ",
124 "\x{2019}"=>"’",
125 "\x{2026}"=>"…",
126 "\x{201c}"=>"“",
127 "\x{201d}"=>"”",
128 "\x{20ac}"=>"€",
129 "\x{2031}"=>"‱",
130 "\x{2009}"=>" ",
131 "\x{2018}"=>"‘",
132 "\x{2192}"=>"→",
133 "\x{fffd}"=>"�",
134 "\x{2001}"=>" ",
135 "\x{0152}"=>"Œ",
136 "\x{C3A9}"=>"\x{E9}",
137 "\x{2013}"=>"–"
138 );
139 my %hashIso=(
140
141 );
142 my ($chemin,$rubrique,$fichier)=@_;
143 if ($case==1)
144 {
145 mkdir ("./RESULTAT_EXTRACTION/RECODE_ISO");
146 mkdir ("./RESULTAT_EXTRACTION/RECODE_ISO/$rubrique");
147 my $casVide=0;
148 open (my $IN, "<:encoding($utf8)", "$chemin") or die "problème ouverture fichier UTF8 numéro : $chemin";
149 open (my $OUT, ">>:encoding($iso)", "./RESULTAT_EXTRACTION/RECODE_ISO/$rubrique/recode$fichier");
150 unless (my $test = <$IN>)
151 {
152 say $OUT "fichier vide";
153 $casVide++;
154 }
155 while (my $ligne = <$IN>)
156 {
157 foreach my $key (keys %hashUtf8)
158 {
159 $ligne=~ s/$key/$hashUtf8{$key}/g;
160 }
161
162 print $OUT "$ligne";
163 }
164 close $IN;
165 close $OUT;
166 if ($casVide == 0)
167 {
168
169 mkdir ("./RESULTAT_EXTRACTION/treetagger");
170 mkdir ("./RESULTAT_EXTRACTION/treetagger/utf8");
171 mkdir ("./RESULTAT_EXTRACTION/treetagger/utf8/$rubrique");
172 open (my $OUTTreetagger , ">>", "./RESULTAT_EXTRACTION/treetagger/utf8/$rubrique/tagger_$fichier");
173 foreach (`/home/joe/treetagger/cmd/tree-tagger-french-utf8 $chemin`)
174 {
175 print $OUTTreetagger "$_";
176 }
177 close $OUTTreetagger;
178 }
179 }
180 if ($case==2)
181 {
182 mkdir ("./RESULTAT_EXTRACTION/RECODE_UTF8");
183 mkdir ("./RESULTAT_EXTRACTION/RECODE_UTF8/$rubrique");
184 my $casVide=0;
185 open (my $IN2, "<:encoding($iso)", "$chemin") or die "problème ouverture fichier ISO numéro : $chemin";
186 open (my $OUT2, ">>:encoding($utf8)", "./RESULTAT_EXTRACTION/RECODE_UTF8/$rubrique/recode$fichier") or die "problème ouverture fichier ISO numéro : $chemin";
187 unless (my $test = <$IN2>)
188 {
189 say $OUT2 "fichier vide";
190 $casVide++;
191 }
192 while (my $ligne = <$IN2>)
193 {
194 foreach my $key (keys %hashIso)
195 {
196 $ligne=~ s/$key/$hashIso{$key}/g;
197 }
198
199 print $OUT2 "$ligne";
200 }
201 close $IN2;
202 close $OUT2;
203 if ($casVide == 0)
204 {
205
206 mkdir ("./RESULTAT_EXTRACTION/treetagger");
207 mkdir ("./RESULTAT_EXTRACTION/treetagger/recodeIso");
208 mkdir ("./RESULTAT_EXTRACTION/treetagger/recodeIso/$rubrique");
209 open (my $INTreetagger , "<", "./RESULTAT_EXTRACTION/RECODE_UTF8/$rubrique/recode$fichier");
210 open (my $OUTTreetagger , ">>", "./RESULTAT_EXTRACTION/treetagger/recodeIso/$rubrique/tagger_$fichier");
211 foreach (`/home/joe/treetagger/cmd/tree-tagger-french $chemin`)
212 {
213 print $OUTTreetagger "$_";
214 }
215 close $INTreetagger;
216 close $OUTTreetagger;
217 }
218 }
219
220 }
221