use locale;
#!/usr/bin/perl

#On ouvre en lecture le fichier à traiter
#et on le fait pointer sous le nom FILEIN
open(FILEIN, "<$ARGV[0]");

#On crée un tableau
@FILEIN=<FILEIN>;

#On ouvre en écriture le fichier de sortie pour la liste de mots
open(FILEOUT1, ">liste_mots.html");

#On ouvre en écriture le fichier de sortie pour la liste des occurences
open(FILEOUT2, ">liste_occurences.html");

#On commence à écrire le fichier1 en sortie
print FILEOUT1 "<html>\n<body>\n";
print FILEOUT1 "<title>Dictionnaire alphabétique</title>\n";

#On écrit le début du tableau1
print FILEOUT1 "<table align=\"center\" bgcolor=\"white\" border=\"1\"><tr><td><b>Mot</b></td><td align=\"center\"><b>Fréquence</b></td>\n";

#On commence à écrire le fichier1 en sortie
print FILEOUT2 "<html>\n<body>\n";
print FILEOUT2 "<title>Dictionnaire des occurences</title>\n";

#On écrit le début du tableau1
print FILEOUT2 "<table align=\"center\" bgcolor=\"white\" border=\"1\"><tr><td><b>Mot</b></td><td align=\"center\"><b>Fréquence</b></td>\n";


#On crée un compteur pour compter les lignes, les mots et les mots différents
$i=0;
$j=0;
$k=0;

#On crée un dictionnaire
%dico=();

#Tant qu'il y a des lignes à lire...

foreach $lines (@FILEIN) {

	#On crée un tableau avec un mot par ligne
    my @TAB=split(/[\W]/,$lines);
	
	#On incrémente le compteur
	$i++;
	
	#Pour chaque mot du tableau...
    foreach my $mot (@TAB) {
		
		#On incrémente le compteur:
		$j++;
		
		#Afin de ne pas compter les blancs on ajoute une condition
		if ($mot ne "") {
		
			#Si le contenu de la variable $mot existe dans le dico alors:
			if (exists($dico{$mot})) {
				#On calcule la fréquence...
				$dico{$mot}++;
			}
			
			#Si le contenu de la variable $mot n'existe pas dans le dico alors:
			else {
				#On affecte la valeur 1 à la valeur de la clé $mot du tableau $dicomots
				$dico{$mot}=1;
				#On incrémente le compteur $compteurmotsdifferents
				$k++;
			}
		}
	}
}

#Pour chaque mot on fait un tri en fonction des clefs
foreach $mots ( sort keys(%dico) ) {

	#On sort le tout
	print FILEOUT1 "<tr><td>",$mots,"</td><td>",$dico{$mots},"</td>\n";

}

#On crée un dico + mêmes étapes que précédemment
%dicobis=();

foreach $linesbis (@FILEIN) {

    my @TABBIS=split(/[\W]/,$linesbis);
    foreach my $motbis (@TABBIS) {
		
		#Afin d'éviter de calculer les blancs on ajoute une condition
	    if ($motbis ne "") {
		
		#On calcule la fréquence
	    $dicobis{$motbis}++;
		}
	}
}

#Pour chaque mot on trie en fonction de la clef (qui est ici la fréquence) par ordre décroissant
foreach $motsbis (sort {$dicobis{$b} <=> $dicobis{$a} }  keys %dicobis) {

	#On sort le tout
    print FILEOUT2 "<tr><td>",$motsbis,"</td><td>",$dicobis{$motsbis},"</td>\n";
}


#On écrit la fin des fichiers
print FILEOUT1 "</body>\n</html>\n";
print FILEOUT2 "</body>\n</html>\n";

#On ferme les fichiers ouverts
close FILEIN;
close FILEOUT1;
close FILEOUT2;



#Puis on affiche un petit "résumé":
print "\nResultat de l'analyse du fichier:\n";

#Si la variable $i contient 0 alors:
if ($i==0) {
	#On affiche "Le fichier ne contient aucune ligne."
	print "Le fichier ne contient aucune ligne.\n";
}

#Si $i contient une ligne alors:
elsif ($i==1) {
	#On affiche "Le fichier contient $i ligne." avec retour à la ligne.
	print "Le fichier contient $i ligne.\n";
}
#Si $i ne contient ni 0 ni 1 alors:
else {
	#On affiche "Le fichier contient $i lignes.\n" puis retour à la ligne:
	print "Le fichier contient $i lignes.\n";
}

#Si la variable $j contient 0 alors:
if ($j==0) {
	#On affiche "Le fichier ne contient aucun mot."
	print "Le fichier ne contient aucun mot.\n";
}

#Si $i contient un mot alors:
elsif ($j==1) {
	#On affiche "Le fichier contient $i mot." avec retour à la ligne.
	print "Le fichier contient $j mot.\n";
}
#Si $i ne contient ni 0 ni 1 alors:
else {
	#On affiche "Le fichier contient $i mots.\n" puis retour à la ligne:
	print "Le fichier contient $j mots.\n";
}
print "Le fichier contient $k mots différents.\n";
print "Les resultats sont consultables au format HTML dans le fichier liste_mots.html et le fichier liste_occurences.html.\n";
























