ignorer les titres

Le
nicolas_laurent545
Bonjour,
Ce petit programme m'aide à mettre sur une même ligne les mots qui ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de façon
à ce que j'obtiens:

<file>premier fichier</file>
rester -> reste,restant
<file>deuxeme ficher</file>
manger -> mangez,mangeons
regarder -> regardez
<file>troisieme fichier</file>
aimer -> aimons,aimez

Je vous remercie d'avance

#!/usr/bin/perl
use warnings;
use strict;
my %hash;
while(<DATA>) {
chomp;
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

for my $key (sort keys %hash) {
print "$key -> @{$hash{$key}}";
}

__DATA__
<file>premier fichier</file>
rester -> reste
rester -> restant
<file>deuxeme ficher</file>
manger -> mangeoire
manger -> mangeons
regader -> regardez
<file>troisieme fichier</file>
aimer -> aimons
aimez -> aimez
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #146917
À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):
Ce petit programme m'aide à mettre sur une même ligne les mots qui ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de façon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et après
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}

--
Paul Gaborit - Perl en français -
nicolas_laurent545
Le #146805
On Jun 13, 3:09 am, Paul Gaborit
À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):

Ce petit programme m'aide à mettre sur une même ligne les mots qui ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de façon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et après
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}

--
Paul Gaborit - Perl en français -

Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés, mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


Paul Gaborit
Le #146804
À (at) Wed, 13 Jun 2007 09:25:00 -0700,
écrivait (wrote):
Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés,


C'était le but. L'intérêt du deuxième bout de code est juste qu'il est
plus concis.

Ces deux bouts de codes ne se comportent pas exactement de la même
manière si vous avez une ligne avec deux flèches (->)... mais cela ne
dervait jamais arriver.

[...] mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


C'est un autre problème. Mais ma boule de cristal est cassée ! Il
faudra donc que vous nous en disiez un peu plus si vous souhaitez
qu'on essaie de vous aider...


--
Paul Gaborit - Perl en français -
fred78980
Le #146803
On Jun 13, 12:37 pm, Paul Gaborit wrote:
À (at) Wed, 13 Jun 2007 09:25:00 -0700,
écrivait (wrote):

Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés,


C'était le but. L'intérêt du deuxième bout de code est juste qu'i l est
plus concis.

Ces deux bouts de codes ne se comportent pas exactement de la même
manière si vous avez une ligne avec deux flèches (->)... mais cela ne
dervait jamais arriver.

[...] mais je les perds
dans le output. J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


C'est un autre problème. Mais ma boule de cristal est cassée ! Il
faudra donc que vous nous en disiez un peu plus si vous souhaitez
qu'on essaie de vous aider...

--
Paul Gaborit - Perl en français - Alors j'ai un fichier assez long avec des séparations qui fonctionne

comme de titres et une liste de verbes. Si j'imprime cette liste,
c'est long pour rien. alors je veux mettre les dérivés d'un même verbe
sur la même ligne
mais je veux garder les titres. Si vous êtes consultant et prêt à
m'aider dites moi combien vous chargez à l'heure, et si vous êtes
disponible j'aurais besoin de vos services.
Merci


Klaus
Le #146547
On Jun 13, 6:25 pm, wrote:
On Jun 13, 3:09 am, Paul Gaborit
À (at) Tue, 12 Jun 2007 08:36:26 -0700,
écrivait (wrote):

Ce petit programme m'aide à mettre sur une même ligne les mots qu i ont
le même verbe à l'infinitif, seulement le programme traite aussi les
titres. Comment faire pour que le programme ignore les titres de fa çon
à ce que j'obtiens:
[...]

my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);


Il suffit de remplacer ces deux lignes afin de tester la présence de
la flêche avant de faire quoi que ce soit :

if (m/->/) {
my($key,$val) = split(/s*->s*/);
push(@{$hash{$key}},$val);
}

Mais, quitte à tester, autant mémoriser ce qu'il y a avant et apr ès
dans le même temps.

if (m/^(.*)s*->s*(.*)$/) {
push(@{$hash{$1}},$2);
}


Merci pour votre aide, les deux bouts de code font exactement la même
chose et dans les deux cas les titres sont ignorés, mais je les perds
dans le output.


Merci de reduire le programme au minimum pour localiser et isoler le
problème. Ensuite, il est beaucoup plus facile d'obtenir une réponse
dans un newsgroup pour le problème.

J'aurais besoin encore de votre aide car je connais
pas grand chose à la programmation.


voir Perlfaq 2 "Les livres sur Perl":
http://perl.enstimac.fr/DocFr/perlfaq2.html#les%20livres%20sur%20perl

--
Klaus



Publicité
Poster une réponse
Anonyme