#!/usr/bin/perl

# script qui affiche les nombres d'occurences des variables d'un fichier perl, en ordre croissant
$fichier_texte = shift;

open(TEXT, "<$fichier_texte");

while (<TEXT>) {
	if (/\s*#/) {
		# c'est du commentaire
	} else {
		# c'est du code
		while (/\$\w+/) {
		# tant que la ligne contient une variable
			s/[^\$]*(\$\w+)//;
			# supprimer la variable, et tout ce qui précède
			$var = $1;
			# récupérer la variable, qui avait été mise entre () dans le s///;
			$vars{$var}++;
			# incrémenter le hash %$vars pour la variable
		}
	}
}
print "Le fichier \"$fichier_texte\" contient : \n\"Nombre d'occurences\" : \"Variable\"\n";

foreach (sort keys %vars) {
	 push (@occurences, "$vars{$_}\t: $_\n");
	# mettre les lignes d'affichage dans le vecteur @occurences
}

foreach (sort {$a <=> $b} @occurences) {
# trier en odre croissant (des nombres d'occurences) pour l'affichage
# l'option {$a <=> $b} fait que le tri (sort) se fait en ordre numérique
# au lieu de l'ordre lexical (alphabétique), qui est le tri par défaut
	 print;
}
