gilou Modérateur Modosaurus Rex | Bonjour,
Le principe de base en est simple et documenté dans le code qui suit Code :
#!/usr/bin/perl use strict; use warnings; my %words; while (<> ) { # donc on va passer le fichier sur STDIN avec cat ou autre chop; # On vire le caractère de fin de ligne tr /.,!?:/ /; # On remplace la ponctuation (en rajouter s'il en manque) par des espaces foreach (split /\ s+/, $_) { # on splitte la ligne sur les espaces $words{$_}++; } } # Après, a vous de choisir les critères de tris vous convenant pour l'affichage # j'ai choisi ici d'abord le nombre d'occurences (ordre décroissant), puis la taille (ordre croissant), puis l'ordre alphabétique (ordre croissant) foreach (sort {$words{$b} <=> $words{$a} or $a cmp $b } (keys %words)) { print "$_: $words{$_}\n"; }
|
$words{$_}++;
Pour chaque mot (passé dans $_) trouvé par split, si il figure dans %words, on incrémente l'entrée correspondante, et sinon, on crée l'entrée et on met sa valeur à 1.
A+, ---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
|