Je n'ai pas de classement par ordre alphab=E9tique, ce qui me semble
normal vu que sort {$a<=3D>$b} est justement destin=E9 aux classements
num=E9riques.
Sauriez-vous comment indiquer au sort que la donn=E9e est une cha=EEne ?
Je n'ai pas de classement par ordre alphabétique, ce qui me semble normal vu que sort {$a<=>$b} est justement destiné aux classements numériques.
Sauriez-vous comment indiquer au sort que la donnée est une chaîne ?
Pour un tri alphabétique, il faut utiliser cmp à la place de <=> sort {$a cmp $b} ...
-- J-L.M. http://www.bribes.org/perl
ctobini
Bonjour et merci de la réponse, ça marche parfaitement pour les chaîne, j'ai cependant un problème, je me triture la tête depuis ce matin sans voir la solution.
Comme pour l'exemple de hash que j'ai donné dans le post, je voudrais trier 'c', 'd' et 'e' selon 'qual' qui est une chaîne de caractères, mais aussi selon 'rat' qui est numérique.
C'est à dire que selon les valeurs de 'qual' soit 'best', 'good' ou 'poor' faire une classification selon 'best' 'good' et 'poor' et également les valeurs de 'rat'.
Bonjour et merci de la réponse, ça marche parfaitement pour les
chaîne, j'ai cependant un problème, je me triture la tête depuis ce
matin sans voir la solution.
Comme pour l'exemple de hash que j'ai donné dans le post, je voudrais
trier 'c', 'd' et 'e' selon 'qual' qui est une chaîne de caractères,
mais aussi selon 'rat' qui est numérique.
C'est à dire que selon les valeurs de 'qual' soit 'best', 'good' ou
'poor' faire une classification selon 'best' 'good' et 'poor' et
également les valeurs de 'rat'.
Bonjour et merci de la réponse, ça marche parfaitement pour les chaîne, j'ai cependant un problème, je me triture la tête depuis ce matin sans voir la solution.
Comme pour l'exemple de hash que j'ai donné dans le post, je voudrais trier 'c', 'd' et 'e' selon 'qual' qui est une chaîne de caractères, mais aussi selon 'rat' qui est numérique.
C'est à dire que selon les valeurs de 'qual' soit 'best', 'good' ou 'poor' faire une classification selon 'best' 'good' et 'poor' et également les valeurs de 'rat'.
La méthode simple (mais moins rapide) : il faut trier d'abord par la clé secondaire (ici les valeurs numériques) puis par la clé primaire (ici l'ordre alphabétique). Le sort de perl (qui est un tri bien élevé) conserve l'ordre des élèments égaux.
La méthode plus efficace : faire une fonction de comparaison qui compare la clé primaire puis la clé secondaire (mais uniquement en cas d'égalité de la clé primaire).
On s'éloigne de plus en plus de Perl pour arriver vers des questions d'algorithmiques classiques.
Pour y revenir, vous pourriez lire la FAQ de Perl en y cherchant le mot 'sort' :
perldoc -q sort
Le cas du tri multi-clés y est traité... Un article intéressant y est aussi cité :
<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz>
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 16 Feb 2006 06:08:24 -0800,
"ctobini" <ctemp2@free.fr> écrivait (wrote):
La méthode simple (mais moins rapide) : il faut trier d'abord par la
clé secondaire (ici les valeurs numériques) puis par la clé primaire
(ici l'ordre alphabétique). Le sort de perl (qui est un tri bien
élevé) conserve l'ordre des élèments égaux.
La méthode plus efficace : faire une fonction de comparaison qui
compare la clé primaire puis la clé secondaire (mais uniquement en cas
d'égalité de la clé primaire).
On s'éloigne de plus en plus de Perl pour arriver vers des questions
d'algorithmiques classiques.
Pour y revenir, vous pourriez lire la FAQ de Perl en y cherchant le
mot 'sort' :
perldoc -q sort
Le cas du tri multi-clés y est traité... Un article intéressant y est
aussi cité :
<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz>
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
La méthode simple (mais moins rapide) : il faut trier d'abord par la clé secondaire (ici les valeurs numériques) puis par la clé primaire (ici l'ordre alphabétique). Le sort de perl (qui est un tri bien élevé) conserve l'ordre des élèments égaux.
La méthode plus efficace : faire une fonction de comparaison qui compare la clé primaire puis la clé secondaire (mais uniquement en cas d'égalité de la clé primaire).
On s'éloigne de plus en plus de Perl pour arriver vers des questions d'algorithmiques classiques.
Pour y revenir, vous pourriez lire la FAQ de Perl en y cherchant le mot 'sort' :
perldoc -q sort
Le cas du tri multi-clés y est traité... Un article intéressant y est aussi cité :
<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz>
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
ctobini
Bonjour et merci pour l'info, après avoir lu la doc de 'sort', j'ai pu m'en tirer facilement grâce à un sort { $h->{a}{b1}{chaine} || $h->{a}{b2}{numérique} } qui trie des clés primaires identiques selon une clés secondaire ( sort { primaire || secondaire } ).
Bonne journée,
C. Tobini
Bonjour et merci pour l'info, après avoir lu la doc de 'sort', j'ai pu
m'en tirer facilement grâce à un sort { $h->{a}{b1}{chaine} ||
$h->{a}{b2}{numérique} } qui trie des clés primaires identiques selon
une clés secondaire ( sort { primaire || secondaire } ).
Bonjour et merci pour l'info, après avoir lu la doc de 'sort', j'ai pu m'en tirer facilement grâce à un sort { $h->{a}{b1}{chaine} || $h->{a}{b2}{numérique} } qui trie des clés primaires identiques selon une clés secondaire ( sort { primaire || secondaire } ).