Bonjour
J'ai un code qui construit une table de hashage multiple à partir d'un dictionnaire, c'est à dire si un terme à plusieurs sens on peut trouver tous ces sens.
Le problème est quand j'affiche le contenu du hash des termes avec accent
par exemple les sens du terme bénéfice dans le dictionnaire (séparé par un espace:
le code il lit le dictionnaire, ensuite prend un fichier qui contient des lignes, traduit chaque mot de la ligne par tous ses sens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 living bénéfice payback bénéfice income bénéfice
le fichier en entrée contient :
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 #!/usr/bin/perl use strict; use warnings; print "choisis un nom de fichier pour contenir les termes extraits\n"; my $fic=<STDIN>; #--------------------------------------------------- # initialisation des variables #--------------------------------------------------- open(FIC1, ">$fic"); my @stops; my @file; my $i=0; my $word; my $word1; my $line; use File::Copy; open( STOPWORD, "C:\\ats1\\translate-ats\\fullDicText" ) or die "Can't Open: $!\n"; #lecture du dictionnaire et stockage de plusieurs sens pour le même terme my %table; while (<STOPWORD>) { chomp; my ($city, $country) = split ; $table{$country} = [] unless exists $table{$country}; push @{$table{ $country}}, $city; } close STOPWORD; #le test de fédéral marche correctement $word="bénéfice"; my @citie = @{$table{$word}}; print sort @citie; print "\n"; open (FILE, "C:\\ats1\\translate-ats\\t.txt")or die"Cannot open FILE"; while (<FILE>) { $line=$_; $i=0; my @words = split(/\s/,$line); foreach $word1(@words){ print " $word1\n";my @cities = @{$table{"$word1"}};print sort @cities;print "\n"; } print FIC1 "\n"; } exit 0;
Le problème ici est un problème de lecture, car ca marche bien pour les termes sans accent, même au début du programme, il y a un test qui marche correctement pour les termes avec accent, mais dès que je lit à partir d'un fichier occure le problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part bénéfice fédéral résultat
le message d'erreur est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part can't use undefined value as an array reference at line 52,<FILE> line1
Partager