# Fréquences des mots
# Afficher une liste des mots d'un état quelconque du corpus Prématurés en ordre alphabétique :
	### Afficher une liste des types de mots en ordre de fréquence descendant.
	### Quelle est la fréquence la plus haute ?

use locale;
open (FILEIN, "dico.txt"); 	# ouverture du fichier sur lequel on travaille en lecture
open (FILEOUT, ">listealphabetique.txt");
open (FILE3, ">listefrequence.txt");
%listealphabetique = ();
%listefrequence = ();
 while ($ligne = <FILEIN>) {	# Lire toutes les lignes du fichier dico.txt
    if ($ligne=~/^(\w+) ([0-9]+) *$/) {	# si la ligne ressemble à ça : "chaine de caractère - espace - nombre". La première parenthèse correspond à $1, la seconde à $2, etc = on construit le mot et sa fréquence
	#print $ligne;
	$mot=$1; 	# on associe les mots à la variable $1 (première parenthèse de l'expression régulière)
	$freq=$2;	# on associe les mots à la variable $2 (deuxième parenthèse de l'expression régulière)
	$listealphabetique{$mot}=$freq; 	# la clé de la table de hachage "listealphabetique" $mot on lui associe sa fréquence
	}
}
@lesmots = keys(%listealphabetique);	# cette fontion permet de mettre les clés dans le tableau @lesmots
@lesmots = sort (@lesmots); 	# la fonction "sort" permet de trier les clés du tableau par ordre alphabétique
foreach my $mot (@lesmots) {	# on utilise toujours l'expression avec "foreach" pour lire un tableau
		print FILEOUT "MOT : $mot	FREQUENCE : $listealphabetique{$mot} \n";		# on écrit dans le tableau @lesmots chaque mot et sa fréquence correspondante
		}
print FILE3 "tableau trié par ordre de fréquence descendant : \n";
@listefrequence = sort { $listealphabetique{$b} <=> $listealphabetique{$a} } keys (%listealphabetique);	# cette fonction permet de trier les valeurs du tableau par ordre décroissant 
foreach my $mot (@listefrequence) {	# on utilise toujours l'expression avec "foreach" pour lire un tableau
		print FILE3 "FREQUENCE : $listealphabetique{$mot} MOT : $mot \n";		# on écrit dans le tableau @lesmots chaque mot et sa fréquence correspondante
		}
$freqhaute = $listefrequence[0];	# cette fonction permet de calculer la première valeur du tableau concerné
print "le mot $freqhaute a la frequence la plus haute \n";
close(FILE3);
close(FILEOUT);
close(FILEIN);

