Alors...
sort() est la fonction de tri de Perl, si tu lui donnes simplement un tableau en paramètre, elle renvoie un tableau ayant le même contenu, mais trié alphabétiquement. Extrêmement rapide. On peut également lui passer en paramètre une fonction de comparaison. Un bloc où $a et $b sont les éléments à comparer.
Par exemple :
my @sorted = sort {$a <=> $b} (15, 13, 1, 30, 3);
@sorted sera alors (1, 3, 13, 15, 30). (<=> est la fonction de comparaison numérique, c'est à dire que 1 <=> 4 renvoie une valeur positive (dans l'ordre), 1 <=> 1 une valeur nulle et 4 <=> 1 une valeur négative (pas dans l'ordre). Toute fonction de comparaison doit suivre les mêmes conventions)
Mais qu'aurait donné :
my @sorted = sort (15, 13, 1, 30, 3);
Et bien @sorted aurait contenu (1, 13, 15, 3, 30), puisqu'il s'agit là de l'ordre alphabétique...
Par ailleurs :
for (1, 2, 5, 6) { print "$_," };
affiche : "1,2,5,6,"
C'est à dire que $_ prend dans le corps de la boucle successivement toutes les valeurs de la liste.
Donc :
1 2
| for (sort {$a <=> $b} keys %data) {
...} |
effectue une itération sur toutes les clés du hash %data, dans l'ordre numérique croissant.
--
Jedaï
Partager