[PERL ]Tri d'un tableau 2D
Résolu/Fermé
sorbidot
Messages postés
31
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
11 août 2008
-
11 août 2008 à 16:28
sorbidot Messages postés 31 Date d'inscription mardi 6 février 2007 Statut Membre Dernière intervention 11 août 2008 - 11 août 2008 à 22:46
sorbidot Messages postés 31 Date d'inscription mardi 6 février 2007 Statut Membre Dernière intervention 11 août 2008 - 11 août 2008 à 22:46
A voir également:
- [PERL ]Tri d'un tableau 2D
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Trier un tableau excel - Guide
- Comment faire un tableau - Guide
- Triez ce tableau par ordre alphabétique des prénoms - Forum LibreOffice / OpenOffice
4 réponses
sorbidot
Messages postés
31
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
11 août 2008
3
11 août 2008 à 22:46
11 août 2008 à 22:46
je vous remercie pour vos réponse.
l'instruction suivante :
my @tri = sort { $a->[2] <=> $b->[2] } @tab;
marche torp bien.
l'instruction suivante :
my @tri = sort { $a->[2] <=> $b->[2] } @tab;
marche torp bien.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 août 2008 à 22:09
11 août 2008 à 22:09
Salut,
il suffit de trier selon le champ concerné (si nombre utilise <=> , si chaine de caractère utilise cmp )
voici une exemple
Tu peux aussi utiliser plusieurs critères en cas d'égalité. Par exemple si le champ 3 est le même tu peux trier selon un autre champ
il suffit de trier selon le champ concerné (si nombre utilise <=> , si chaine de caractère utilise cmp )
voici une exemple
#!/usr/bin/perl # use warnings;use strict; my @tab = ( ["lami20j","x",1000,1000,"lami20j,,,","/home/lami20j","/bin/bash"], ["mysql","x",104,112,"MySQL Server,,,","/var/lib/mysql","/bin/false"], ["yann","x",1001,1001,"","/home/yann","/bin/bash"], ["sshd","x",108,65534,"","/var/run/sshd","/usr/sbin/nologin"], ["smmta","x",109,113,"Mail Transfer Agent,,,","/var/lib/sendmail","/bin/false"], ["smmsp","x",110,114,"Mail Submission Program,,,","/var/lib/sendmail","/bin/false"], ["bind","x",111,115,"","/var/cache/bind","/bin/false"], ["postfix","x",112,117,"","/var/spool/postfix","/bin/false"], ["papa","x",1002,10001,"","/home/papa","/bin/bash"], ["maman","x",1003,10001,"","/home/maman","/bin/bash"], ["ftp","x",113,65534,"","/home/ftp","/bin/false"], ["uml-net","x",114,119,"","/home/uml-net","/bin/false"], ["saned","x",115,120,"","/home/saned","/bin/false"], ["c","x",1004,1004,"","/home/c","/bin/sh"], ["cristi","x",1005,1005,"","/home/cristi","/bin/bash"], ["invite","x",1006,1006,"","/home/invite","/bin/bash"], ["clamav","x",116,121,"","/var/lib/clamav","/bin/false"], ); my @tri = sort { $a->[2] <=> $b->[2] } @tab; # tri selon le champ 3 print "@$_\n" for @tri; __END__Ce qui est intéressant c'est la possibilité de faire un tri sur un champ calculable
Tu peux aussi utiliser plusieurs critères en cas d'égalité. Par exemple si le champ 3 est le même tu peux trier selon un autre champ
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 août 2008 à 22:12
11 août 2008 à 22:12
Et le résultat
lami20j@debian:~/trash$ perl ccm.pl mysql x 104 112 MySQL Server,,, /var/lib/mysql /bin/false sshd x 108 65534 /var/run/sshd /usr/sbin/nologin smmta x 109 113 Mail Transfer Agent,,, /var/lib/sendmail /bin/false smmsp x 110 114 Mail Submission Program,,, /var/lib/sendmail /bin/false bind x 111 115 /var/cache/bind /bin/false postfix x 112 117 /var/spool/postfix /bin/false ftp x 113 65534 /home/ftp /bin/false uml-net x 114 119 /home/uml-net /bin/false saned x 115 120 /home/saned /bin/false clamav x 116 121 /var/lib/clamav /bin/false lami20j x 1000 1000 lami20j,,, /home/lami20j /bin/bash yann x 1001 1001 /home/yann /bin/bash papa x 1002 10001 /home/papa /bin/bash maman x 1003 10001 /home/maman /bin/bash c x 1004 1004 /home/c /bin/sh cristi x 1005 1005 /home/cristi /bin/bash invite x 1006 1006 /home/invite /bin/bash