OVH Cloud OVH Cloud

[fmbl] Retour chariot dans one-liner

4 réponses
Avatar
Hugolino
Bonsoir,

Ceci constitue mon premier post dans fclp, donc merci d'excuser un
newbie *total* en perl (je lis le forum depuis quelques jours, j'ai un
chameau chez moi mais je ne fais que re-tendre l'oreilly vers Perl
depuis que j'ai ouï-dire de peu amènes propos sur PHP quant à la
maintenance des scripts PHP (oui, ceci est un one-liner en bon
français)).


Ce qui m'amène, c'est ça:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
Message-ID: <20050301232949.63fc4f06@norbert.inapg.inra.fr>
[...]
perl -ane
'while($_=shift@F){s/(\S)(.*)(\S)/join"",$1,sort(split"",$2),$3." "/e;pr
int}' $fichier
8<-----------8<---------8<----------8<----------8<----------8<----------8<

qui permet, pourvu qu'on lui passe un fichier texte, de ré-aranger
chaque mot d'une phrase du-dit fichier dans l'ordre alphabétique (ASCII ?).


Problème (pour moi, pas pour vous): les retours à la ligne ne sont pas
gérés.

Ce que je voudrais, c'est que la sortie ait les mêmes retour-chariot (à
la même place) que dans le fichier d'origine, afin de garder un tent
soit peu le format du fichier d'entrée.

Vous l'avez compris: j'aborde perl par la coté ludique afin d'y puiser
la motivation de r'ouvrir ce bouquin-chameau et de trouver
l'inspiration qui me permettra de remplir le cgi-bin de quelques scripts
afin de gérer le bidule que j'envisage de faire tourner un jour
sur un serveur.


Merci de votre attention.


PS (à toutes fins utiles):
8<-----------8<---------8<----------8<----------8<----------8<----------8<
$ perl -v
This is perl, v5.8.4 built for i386-linux-thread-multi
8<-----------8<---------8<----------8<----------8<----------8<----------8<


--
> Je ne veux pas lancer un débat (sinon je mettrait ça sur fcold) mais
> j'aimerais plutôt savoir ce que les autres en pensent, comment ils ont
> configuré ça, s'ils aiment...
-+- GA in Guide de linuxien pervers - "Le premier qui débat aura un gage" -+-

4 réponses

Avatar
Jérémy JUST
On Thu, 3 Mar 2005 22:39:16 +0100
Hugolino wrote:

perl -ane
'while($_=){s/(S)(.*)(S)/join"",$1,sort(split"",$2),$3."
"/e;pr int}' $fichier


Oulà-là, malheureux, tu exhibes mon pauvre code ici? Mais j'ai une
réputation à tenir!

Bon, j'ai posté il y a quelques heures sur fmbl une version plus jolie
et moins boguée (elle gère les caractères accentués correctement). Et
qui fait ce que tu demandes:

perl -Mlocale -pe 's/(w)(w+)(w)/join"",$1,sort(split"",$2),$3/ge'


les retours à la ligne ne sont pas gérés.


Oui, parce que dans la première version, je découpais chaque ligne en
mots, au moyen de l'option « -a ». Et au moment d'afficher, je mettais
des espaces entre les mots.

Dans la seconde version, je reconnais les mots par ce qu'ils sont
(une série de caractères de mot, « w ») et non par ce qui les sépare.
C'est clair, ce que je raconte?
Et je ne fais plus de boucle « while »: je laisse le modificateur de
regexp « g » se charger de parcourir tous les mots.


Vous l'avez compris: j'aborde perl par la coté ludique afin d'y puiser
la motivation de r'ouvrir ce bouquin-chameau


Je crains que cette espèce de one-liner ne te motive pas beaucoup. Il
faut bien avouer que ce genre d'écriture n'est pas fait pour être lu!


--
Jérémy JUST

Avatar
Denis -esp2008-
Bonjour,

depuis que j'ai ouï-dire de peu amènes propos sur PHP quant à la
maintenance des scripts PHP (oui, ceci est un one-liner en bon
français)).


C'est très fort de parler de "maintenance" et de "one-liner" dans la
même phrase. Le one-liner c'est ce qui existe de moins maintenable. Ça
me désole d'en voir partout où on parle de perl (notamment dans les
programmes de formation), c'est ce qui fait la mauvaise réputation de
perl (comme quoi ce serait un langage incompréhensible).


--
Denis

Avatar
Fabrice L.
"Denis -esp2008-" a écrit dans le
message de
news:
Bonjour,

depuis que j'ai ouï-dire de peu amènes propos sur PHP quant à la
maintenance des scripts PHP (oui, ceci est un one-liner en bon
français)).


C'est très fort de parler de "maintenance" et de "one-liner" dans la
même phrase. Le one-liner c'est ce qui existe de moins maintenable. Ça
me désole d'en voir partout où on parle de perl (notamment dans les
programmes de formation), c'est ce qui fait la mauvaise réputation de
perl (comme quoi ce serait un langage incompréhensible).


J'avoue etre assez d'accord avec denis !



--
Denis



Avatar
Hugolino
Le Fri, 04 Mar 2005 07:28:36 +0100, Denis -esp2008- a écrit:
Bonjour,


Bonjour


depuis que j'ai ouï-dire de peu amènes propos sur PHP quant à la
maintenance des scripts PHP (oui, ceci est un one-liner en bon
français)).


C'est très fort de parler de "maintenance" et de "one-liner" dans la
même phrase.


OK, je ne le referais plus (mais, je l'ai dit, je (re-) debute)


Le one-liner c'est ce qui existe de moins maintenable. Ça
me désole d'en voir partout où on parle de perl (notamment dans les
programmes de formation), c'est ce qui fait la mauvaise réputation de
perl (comme quoi ce serait un langage incompréhensible).


"apt-get install perl-doc" donc.



--
Il te suffit de prendre des câbles certifiés 1F (pour un félin) ou NF
(pour N félins).
"Les chats, c'est vraiment des branleurs"

"Ils pensent qu'à jouer au babyfoot et à fumer des pétards"