voila ce que j'ai comme fichier:
pooi 56 sko
one 1222 moi
name 156 10
family 14 1
pro 15 ADD
voici le résultat après le tri :
56 pooi sko
1222 one moi
156 name 10
14 family 1
15 pro ADD
voila ce que j'ai comme fichier:
pooi 56 sko
one 1222 moi
name 156 10
family 14 1
pro 15 ADD
voici le résultat après le tri :
56 pooi sko
1222 one moi
156 name 10
14 family 1
15 pro ADD
Quel est le problème ? Le résultat est conforme à ce que tu veux, non ?
Bon, c'est vrai que ton script est un peu brouillon, on dirait une version un peu maladroite de la transformée schwartzienne. Je n'aurais pas tout-à-fait procédé ainsi, mais ç'a l'air de marcher.
Sinon, conseil : utilise la balise CODE (bouton # dans l'interface de post) quand tu poste du code, c'est plus lisible. Indenter n'est pas du luxe non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 use strict; use warnings; open (KO,"filename.txt") or die " $!"; my @tab=<KO>; print map{$_ ->[0]} sort{ $a->[1] cmp $b->[1] } map{ [$_,(split /\t/)[2]] } @tab ; close(KO);
There's nothing like $HOME!
Au temps pour moi, j'avais basé ma réponse sur une ancienne version de ton post. Je suis trop fatigué pour me pencher sur le problème, là.
There's nothing like $HOME!
Bonjour,
Il est inutile de conserver la ligne d'origine, puisqu'on doit inverser des colonnes. Donc, en s'éloignant un peu de la forme canonique de la transformation de Schwartz, voici un essai à la ligne de commande:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 $ perl -e 'use strict; > use warnings; > > my @tab = split /[\r\n]+/, > "pooi 56 sko > one 1222 moi > name 156 10 > family 14 1 > pro 15 ADD"; > > print join "\n", > map {join " ", ($_ ->[1], $_->[0], $_->[2])} > sort{ $a->[2] cmp $b->[2] } > map{ [(split /\s/)] } @tab ; > ' 14 family 1 156 name 10 15 pro ADD 1222 one moi 56 pooi sko
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Bonjour,
voici une forme légèrement simplifiée de la même chose:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 $ perl -e 'use strict; > use warnings; > use feature qw(say); > > my @tab = split /[\r\n]+/, > "pooi 56 sko > one 1222 moi > name 156 10 > family 14 1 > pro 15 ADD"; > > print > map {"$_->[1] $_->[0] $_->[2]\n"} > sort{ $a->[2] cmp $b->[2] } > map{ [(split /\s/)] } @tab ; > ' 14 family 1 156 name 10 15 pro ADD 1222 one moi 56 pooi sko
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager