sort hash - Perl - Programmation
Marsh Posté le 16-10-2006 à 18:33:06
radioh a écrit : |
Ecrire toi-même la condition de tri pour la fonction sort.
Voir l'aide sur cette fonction : http://perldoc.perl.org/functions/sort.html
Marsh Posté le 16-10-2006 à 18:34:35
et bien il faut effectivement que tu utilises sort, par exemple:
Code :
|
mais tu vas vite te rendre compte que le sort ne va pas exactement correspondre à ce que tu veux.
Tu peux donc faire ton propre sort. Il s'agit en fait d'une sub reçoit obligatoirement en paramètre $a et $b et qui doit retourne -1,0, ou 1 en fonction de qui est plus grand que l'autre.
Par exemple:
Code :
|
Compare la longueur des deux elements.
Et pour l'appel tu fais comme ça:
Code :
|
edit: burned
Marsh Posté le 16-10-2006 à 19:02:59
En l'occurence ici, un test sur la taille ne suffit pas, un petit s/\D//g, combiné avec l'opérateur <=> serait mieux je pense.
Marsh Posté le 16-10-2006 à 19:04:50
Elmoricq a écrit : En l'occurence ici, un test sur la taille ne suffit pas, un petit s/\D//g, combiné avec l'opérateur <=> serait mieux je pense. |
j'ai pas dit que ça suffisait c'était un exemple!
J'avais pas envie de faire tout le truc non plus
Marsh Posté le 16-10-2006 à 19:05:26
Comme tu peux le voir j'ai pas détaillé grand chose non plus
Marsh Posté le 17-10-2006 à 09:05:31
pour tous les tris un peu complexes (ou meme simple, du moment qu'on doit avoir recours à une sort sub autre que les cas les plus simples et optimisés en interne par perl) le module Sort::Key est vraiment ideal : ultra rapide (vraiment) et ultra simple
Marsh Posté le 16-10-2006 à 18:08:56
Salut...
J'aimerais trier une hash selon la clé mais lorsque je fais :
foreach (%$hash) {
print "$_\n";
}
ca m'affiche cela :
OMA100303
OMA100515
OMA100550
OMA10067
mais jaimerais que ca m'affiche :
OMA10067
OMA100303
OMA100515
OMA100550
Vous avez une idée ?