Bonjour à tous c'est encore moi, la novice en perl qui en apprend un peu plus chaque jour grâce à ce forum.
Aujourd'hui je cherche à faire un programme qui extrait tous les bigrammes d'un texte avec la fréquence de chaque.

output :

'le lapin' => 2
'lapin mange' => 1
...

J'ai déjà un bout de code mais j'ai encore un problème avec ces foutus variable ;-) le voici :

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
 
#! /usr/bin/perl
use warnings;
use strict;
 
my $fichier_corpus = 'input.txt';
my $fichier_fr = 'output.txt';
open my $fh_corpus, "<:utf8", $fichier_corpus or die "Impossible de lire $fichier_corpus\n";
open my $fh_fr , ">>:utf8", $fichier_fr or die "Impossible de lire $fichier_fr\n";
my %words;
my $ligne = <$fh_corpus>;
 
while (my $ligne =~ /(\w+ (\w+))/g) {
  ++$words{$1};
  pos($ligne) = $-[2];
}
 
for (sort { index($ligne,$a) <=> index($ligne,$b) } keys %words) {
  print {$fh_fr}"'$_' => $words{$_}\n";
}
quand je l'execute il m'affiche : "use of uninitialized value $ligne in pattern match (m//) at ..."

Quelle modif dois-je apporter ?

Merci beaucoup d'avance de votre aide.