Salut à tous!

J'ai un problème urgent avec mon code, en fait j'essaie de comparer les chaînes de caractères (verbes) contenues dans deux fichiers (f1 et f2). Le programme est censé vérifier par exemple si le mot préférer ou fonctionné contenu dans le premier fichier(f1) apparaît également dans le second(f2). Auquel cas il le signale. Mon code fonctionne bien pour les mots qui n'ont aucun accent. Par contre, lorsqu'il s'agit des mots contenant des caractères accentués (comme ceux des exemples ci-dessus), mon code ne renvoie aucun résultat.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
 
#!/usr/bin/perl -w
 
#ligne de commande : perl extraction_phrase.pl -file <fichier.html> -list <fichier-formeverbales+lemmes>
 
 
#====================================================================
use strict;
use locale;
use utf8;
use Encode;
use Getopt::Long;
use HTML::TreeBuilder;
#binmode STDOUT, 'utf8';
binmode STDIN, 'utf8';
 
#====================================================================
# options
sub usage {
    warn "Usage :
   -file           # fichier à analyser
   -list           # fichier contenant les verbes+lemmes
   \n"
}
 
my $corp;
my $listverbs;
 
unless (&GetOptions(
	     "file=s", \$corp,
		 "list=s", \$listverbs,
	)) 
{
    warn "Probleme d'options\n";
    &usage;
    die;
}
#=====================================================================
 
 
my $ligne;
my @lignes;
my $forme;
my $infinitif;
my %tabformesV;
 
 
sub FormesV{
    my ($f) = $_[0];
    open (F, $f) or die "impossible d'ouvrir '$f' \n" ;
    warn "Lecture du fichier \n";
    binmode(F, ':utf8');
 
	while (<F>) {
    	next if (/^#/);
		$ligne = $_;
		chomp ($ligne);
		#print "===$ligne===\n";
    	($forme, $infinitif) = split (/\|/, $ligne);
		$tabformesV{lc($forme)} = $infinitif;
	}
 
}
&FormesV($listverbs);
 
sub Lecture_et_traitement {
    my ($c) = $_[0];
    open (C, $c) or die "impossible d'ouvrir '$c' \n" ;
    warn "Lecture et traitement du document \n";
    binmode(C, ':utf8');
    my $tree = HTML::TreeBuilder->new; # empty tree
    $tree->parse_file($c);
    my $root = HTML::TreeBuilder->new_from_file($c);
	my @tabphrases = $root->look_down('_tag', 'p');
	foreach my $p(@tabphrases){
		my $phrase = $p->as_text;
		#print "$phrase", "\n";
		my @tabverbes = $p->look_down('_tag', 'b');
		foreach my $v (@tabverbes){
			my $verbe = $v->as_text;
			#print "$verbe\n";
			chomp ($verbe);
			$verbe =lc($verbe);			
			$verbe =~ s/^ //g;
		        $verbe =~ s/j' |j'|je |tu |elle |nous |vous |ils |elles |il |lui |lui-même |me |moi |moi-même |te |toi |toi-même |elle-même |nous-même |vous-même |eux |eux-même |soi-même |toi-meme |elle-meme |nous-meme |vous-meme |soi-meme |toi meme |elle meme |nous meme |vous meme|eux meme |soi meme |soi même |toi même |elle même |nous même |vous même |moi-même |moi meme| moi-meme eux |eux meme |m' |ma |t' |ne |pas |y |ça |ce |n' |s' |c' |en |on |l' |le |la |les |leurs |pas //ig;
		    $verbe =~ s/q' |que |qu' //ig;
			$verbe =~ s/ $//g;
			if (exists $tabformesV{lc($verbe)}) {
				print "$verbe ==> $tabformesV{$verbe}\n";
				#print "===>$phrase", "\n";
			}
			else{
				 print "++++$verbe++++\n";
 
			}
 
		}
 
	}
 
    $tree = $tree->delete;
}
&Lecture_et_traitement($corp);
 
Merci d'avance pour vos proposition :)