#!/usr/bin/perl
#On affecte le contenu de la variable $ARGV[0] (Correspond au premier élément contenu dans le tableau @ARGV, c'est à dire au premier paramètre qui se trouve sur la ligne de commande) à la variable $fichier
$fichier=$ARGV[0];
#On ouvre en lecture le fichier dont le nom est contenu dans la variable $fichier et on le référence sous le nom FICHIERENTREE
open(FICHIERENTREE, $fichier);
#On crée une variable $texte vide
$texte="";
#On crée un compteur $compteur et on l'initialise à 0
$compteur=0;
#Tant qu'on peut associer une ligne du fichier à la variable $ligne, on exécute le bloc d'instructions
while (my $ligne=<FICHIERENTREE>) {
	#On supprime le dernier caractère contenu dans la variable $ligne seulement si celui-ci est un retour à la ligne
	chomp $ligne;
	#On supprime les balises
	$ligne=~s/<.*>//g;
	#On remplace la ponctuation par un dièse
	$ligne=~s/[ ,.;:!?()"«»]/#/g;
	#Si le contenu de la variable $ligne contient une apostrophe précédée d'un mot ne dépassant pas deux lettres (Comme pour qu'en, l'envi, d'odeurs, ...), on exécute le bloc d'instructions
	if ($ligne=~/#[a-zA-Z]{1,2}'/) {
		#On remplace l'apostrophe 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."#";
}
#On ferme le fichier
close(FICHIERENTREE);
#On remplace les dièses qui sont les uns à la suite des autres (Exemple : le##petit###chien) par un seul dièse (Exemple : le#petit#chien)
$texte=~s/#(#)*/#/g;
#On supprime le dernier caractère contenu dans la variable $texte seulement si celui-ci est un retour à la ligne
chomp $texte;
#On sépare (Le séparateur étant le caractère dièse) la chaîne de caractères contenue dans la variable $texte en plusieurs éléments qu'on affecte au tableau @mots
@mots=split(/#/,$texte);
#Pour chaque élément du tableau @mots qu'on affecte à la variable $mot, on exécute le bloc d'instructions
foreach $mot (@mots) {
	#On incrémente le compteur
	$compteur++;
}
#Si la valeur de la variable $compteur est égale à 0, on exécute le bloc d'instructions
if ($compteur==0) {
	#On affiche "Le fichier ", suivi du contenu de la variable $fichier, et suivi de " ne contient aucun mot."
	#On retourne à la ligne
	print "Le fichier ",$fichier," ne contient aucun mot.\n";
}
#Sinon si la valeur de la variable $compteur est égale à 1, on exécute le bloc d'instructions
elsif ($compteur==1) {
	#On affiche "Le fichier ", suivi du contenu de la variable $fichier, suivi de " contient ", suivi du contenu de la variable $compteur, et suivi de " mot."
	#On retourne à la ligne
	print "Le fichier ",$fichier," contient ",$compteur," mot.\n";
}
#Sinon si aucune des deux conditions précédentes n'est remplie (Donc si la valeur de la variable $compteur est strictement supérieure à 1), on exécute le bloc d'instructions
else {
	#On affiche "Le fichier ", suivi du contenu de la variable $fichier, suivi de " contient ", suivi du contenu de la variable $compteur, et suivi de " mots."
	#On retourne à la ligne
	print "Le fichier ",$fichier," contient ",$compteur," mots.\n";
}