#!/usr/bin/perl

#Récupérer le nom du fichier écrit en paramètre n°1 de la commande
$fichier=$ARGV[0];
#Ouverture du fichier en lecture
open(ENTREE, $fichier);
#On remplace la chaîne de caractères ".txt" contenue dans la variable $fichier par ".html"#
#$fichier=~s/.txt/.html/;
#Ouverture du dictionnaire de mots en écriture
open(SORTIE1, ">dico_mots_".$fichier);
#Ouverture du dictionnaire d'occurences en écriture
open(SORTIE2, ">dico_occurences_".$fichier);


#Création d'un compteur de mots
$compteurmots=0;
#Création d'un compteur de lignes
$compteurlignes=0;
#Création d'un compteur d'occurences
$compteuroccurences=0;
#Création d'une variable vide
$texte="";

#tant que le fichier de travail contient des lignes
while (my $ligne=<ENTREE>) {
	#Ajouter un au compteur de lignes
	$compteurlignes++;
	#Supprimer les balises présentes dans le texte
	$ligne=~s/<.*>//g;
	#On remplace les caractères inutiles par un dièse
	$ligne=~s/[ ,.;:!?()"«»-]/#/g;
	#On ajoute, à la suite du contenu de la variable $texte, le contenu de la variable $ligne et on ajoute un dièse
	$texte=$texte.$ligne."#";
}
#Fermeture du fichier de travail
close(ENTREE);
#Metre un seul dièse entre les mots
$texte=~s/#(#)*/#/g;
#Couper le texte en mots
@mots=split(/#/,$texte);
#Pour chaque mot
foreach $mot (@mots) {
	#Ajouter un au compteur de mots
	$compteurmots++;
	#Si le mot existe
	if ($mot ne "") {
		#Si le mot est déjà présent
		if (exists($dicomots{$mot})) {
			#Ajouter 1 à la clé du mot
			$dicomots{$mot}++;
		}
		#Sinon 
		else {
			#la clé est égale 1
			$dicomots{$mot}=1;
			#Ajouter 1 au compteur d'occurences
			$compteuroccurences++;
		}
	}
}
#Trier le tableau mot
@dicom=sort(keys %dicomots);
#Pour chaque élément du tableau mot
foreach $mot (@dicom) {
	#Ecrire la clé et le mot
	print SORTIE1 "$dicomots{$mot} \t $mot \n";
}

#Trier le tableau occurence
@dicooccurences=sort{$dicomots{$b}<=>$dicomots{$a}}(keys %dicomots);
#Pour chaque élément du tableau occurence
foreach $mot (@dicooccurences) {
	#Ecrire le mot et la clé
	print SORTIE2 "$dicomots{$mot} \t $mot \n";
}

#Fermeture dicooccurences
close(SORTIE2);
#Fermeture dicomots
close(SORTIE1);

#Ecrire dans le shell un résumé de l'analyse
print "Resultat de l'analyse du fichier:\n";
#Si le compteur de lignes=0
if ($compteurlignes==0) {
	#On l'écrit
	print "Le fichier ne contient aucune ligne.\n";
}
#Sinon
else {
	#On écrit sa valeur
	print "Le fichier contient $compteurlignes lignes\n";
}
#Si le compteur de mots = 0
if ($compteurmots==0) {
	#On l'écrit
	print "Le fichier ne contient aucun mot.\n";
}
#Sinon
else {
	#On écrit sa valeur
	print "Le fichier contient $compteurmots mots dont $compteuroccurences differents\n";
}
#On écrit le nom des fichiers résultats
print "Nom du fichier contenant le dictionnaire alphabetique : dico_mots_$fichier\n";
print "Nom du fichier contenant le dictionnaire par occurences : dico_occurences_$fichier\n";
