Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul Gaborit
À (at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT), Eric BERTHOMIER écrivait (wrote):
j'ai utilisé le module SWITH pour écrire le code suivant qui me sort par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code plus propre.
switch ($genre) { case /POLICIER/ { $type_genre=1 }; case /POESIE/ { $type_genre=1 }; case /ROMAN/ { $type_genre=1 }; case /CONTE/ { $type_genre=1 }; case /BD/ { $type_genre=1 }; case /BANDE DESSINEE/ { $type_genre=1 }; case /FANTASTIQUE/ { $type_genre=1 }; case /SCIENCE-FICTION/ { $type_genre=1 }; case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; } case /RECIT/ { $type_genre=2; } case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; } case /DOC BM/ { $type_genre=4; } }
La syntaxe utilisée ci-dessus, me semble très bien... En quoi n'est-ce pas propre ?
En revanche, puisque vous testez des chaînes constantes et non pas des expressions régulières, vous pourriez utiliser une table de hachage qui aura l'intérêt d'être beaucoup plus rapide. Un truc du genre :
À définir en début de script et, pouquoi pas, dans une constante (ce que je n'ai pas fait ici).
Puis quand vous avez $genre qui contient votre genre, vous pouvez récupérer le type via :
my $type = $type_by_genre{$genre};
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT),
Eric BERTHOMIER <eberthomier00@gmail.com> écrivait (wrote):
j'ai utilisé le module SWITH pour écrire le code suivant qui me sort
par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code
plus propre.
switch ($genre) {
case /POLICIER/ { $type_genre=1 };
case /POESIE/ { $type_genre=1 };
case /ROMAN/ { $type_genre=1 };
case /CONTE/ { $type_genre=1 };
case /BD/ { $type_genre=1 };
case /BANDE DESSINEE/ { $type_genre=1 };
case /FANTASTIQUE/ { $type_genre=1 };
case /SCIENCE-FICTION/ { $type_genre=1 };
case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; }
case /RECIT/ { $type_genre=2; }
case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; }
case /DOC BM/ { $type_genre=4; }
}
La syntaxe utilisée ci-dessus, me semble très bien... En quoi n'est-ce
pas propre ?
En revanche, puisque vous testez des chaînes constantes et non pas des
expressions régulières, vous pourriez utiliser une table de hachage qui
aura l'intérêt d'être beaucoup plus rapide. Un truc du genre :
À (at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT), Eric BERTHOMIER écrivait (wrote):
j'ai utilisé le module SWITH pour écrire le code suivant qui me sort par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code plus propre.
switch ($genre) { case /POLICIER/ { $type_genre=1 }; case /POESIE/ { $type_genre=1 }; case /ROMAN/ { $type_genre=1 }; case /CONTE/ { $type_genre=1 }; case /BD/ { $type_genre=1 }; case /BANDE DESSINEE/ { $type_genre=1 }; case /FANTASTIQUE/ { $type_genre=1 }; case /SCIENCE-FICTION/ { $type_genre=1 }; case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; } case /RECIT/ { $type_genre=2; } case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; } case /DOC BM/ { $type_genre=4; } }
La syntaxe utilisée ci-dessus, me semble très bien... En quoi n'est-ce pas propre ?
En revanche, puisque vous testez des chaînes constantes et non pas des expressions régulières, vous pourriez utiliser une table de hachage qui aura l'intérêt d'être beaucoup plus rapide. Un truc du genre :
À définir en début de script et, pouquoi pas, dans une constante (ce que je n'ai pas fait ici).
Puis quand vous avez $genre qui contient votre genre, vous pouvez récupérer le type via :
my $type = $type_by_genre{$genre};
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Benoit Izac
Bonjour,
le 14/03/2011 à 15:52, Eric BERTHOMIER a écrit dans le message :
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code plus propre.
switch ($genre) { case /POLICIER/ { $type_genre=1 }; case /POESIE/ { $type_genre=1 }; case /ROMAN/ { $type_genre=1 }; case /CONTE/ { $type_genre=1 }; case /BD/ { $type_genre=1 }; case /BANDE DESSINEE/ { $type_genre=1 }; case /FANTASTIQUE/ { $type_genre=1 }; case /SCIENCE-FICTION/ { $type_genre=1 }; case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; } case /RECIT/ { $type_genre=2; } case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; } case /DOC BM/ { $type_genre=4; } }
Avec une version récente de Perl (>= 5.10) :
#!/usr/bin/perl use strict; use warnings; use 5.010; while (<DATA>) { chomp; my $genre = $_; my $type_genre; given ($genre) { when (/POLICIER/ or /POESIE/ or /ROMAN/ or /CONTE/ or /BD/ or /BANDE DESSINEE/ or /FANTASTIQUE/ or /SCIENCE-FICTION/ or /NOUVELLE/) { $type_genre = 1; } when (/DOCUMENTAIRE/ or /RECIT/ or /BIOGRAPHIE/) { $type_genre = 2; } when (/PERIODIQUE/) { $type_genre = 3; } when (/GROS CARACTERES/ or /DOC BM/) { $type_genre = 4; } default { $type_genre = 0; } } say "genre : $genre, type : $type_genre"; } __DATA__ UN DOCUMENTAIRE PAS MAL OU DE LA SCIENCE-FICTION MAIS PAS DES GROS CARACTERES PERIODIQUEMENT
-- Benoit Izac
Bonjour,
le 14/03/2011 à 15:52, Eric BERTHOMIER a écrit dans le message
<9da44f3f-826b-43d9-b262-6260ae99e7f7@t8g2000vbd.googlegroups.com> :
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code
plus propre.
switch ($genre) {
case /POLICIER/ { $type_genre=1 };
case /POESIE/ { $type_genre=1 };
case /ROMAN/ { $type_genre=1 };
case /CONTE/ { $type_genre=1 };
case /BD/ { $type_genre=1 };
case /BANDE DESSINEE/ { $type_genre=1 };
case /FANTASTIQUE/ { $type_genre=1 };
case /SCIENCE-FICTION/ { $type_genre=1 };
case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; }
case /RECIT/ { $type_genre=2; }
case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; }
case /DOC BM/ { $type_genre=4; }
}
Avec une version récente de Perl (>= 5.10) :
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
while (<DATA>) {
chomp;
my $genre = $_;
my $type_genre;
given ($genre) {
when (/POLICIER/ or
/POESIE/ or
/ROMAN/ or
/CONTE/ or
/BD/ or
/BANDE DESSINEE/ or
/FANTASTIQUE/ or
/SCIENCE-FICTION/ or
/NOUVELLE/) { $type_genre = 1; }
when (/DOCUMENTAIRE/ or
/RECIT/ or
/BIOGRAPHIE/) { $type_genre = 2; }
when (/PERIODIQUE/) { $type_genre = 3; }
when (/GROS CARACTERES/ or
/DOC BM/) { $type_genre = 4; }
default { $type_genre = 0; }
}
say "genre : $genre, type : $type_genre";
}
__DATA__
UN DOCUMENTAIRE
PAS MAL
OU DE LA SCIENCE-FICTION
MAIS PAS DES GROS CARACTERES
PERIODIQUEMENT
le 14/03/2011 à 15:52, Eric BERTHOMIER a écrit dans le message :
J'ai essayé plusieurs syntaxes mais ne voit pas comment rendre ce code plus propre.
switch ($genre) { case /POLICIER/ { $type_genre=1 }; case /POESIE/ { $type_genre=1 }; case /ROMAN/ { $type_genre=1 }; case /CONTE/ { $type_genre=1 }; case /BD/ { $type_genre=1 }; case /BANDE DESSINEE/ { $type_genre=1 }; case /FANTASTIQUE/ { $type_genre=1 }; case /SCIENCE-FICTION/ { $type_genre=1 }; case /NOUVELLE/ { $type_genre=1 };
case /DOCUMENTAIRE/ { $type_genre=2; } case /RECIT/ { $type_genre=2; } case /BIOGRAPHIE/ { $type_genre=2; }
case /PERIODIQUE/ { $type_genre=3; }
case /GROS CARACTERES/ { $type_genre=4; } case /DOC BM/ { $type_genre=4; } }
Avec une version récente de Perl (>= 5.10) :
#!/usr/bin/perl use strict; use warnings; use 5.010; while (<DATA>) { chomp; my $genre = $_; my $type_genre; given ($genre) { when (/POLICIER/ or /POESIE/ or /ROMAN/ or /CONTE/ or /BD/ or /BANDE DESSINEE/ or /FANTASTIQUE/ or /SCIENCE-FICTION/ or /NOUVELLE/) { $type_genre = 1; } when (/DOCUMENTAIRE/ or /RECIT/ or /BIOGRAPHIE/) { $type_genre = 2; } when (/PERIODIQUE/) { $type_genre = 3; } when (/GROS CARACTERES/ or /DOC BM/) { $type_genre = 4; } default { $type_genre = 0; } } say "genre : $genre, type : $type_genre"; } __DATA__ UN DOCUMENTAIRE PAS MAL OU DE LA SCIENCE-FICTION MAIS PAS DES GROS CARACTERES PERIODIQUEMENT
-- Benoit Izac
Eric BERTHOMIER
On 14 mar, 17:38, Paul Gaborit wrote:
(at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT), Eric BERTHOMIER crivait (wrote):
> j'ai utilis le module SWITH pour crire le code suivant qui me sort > par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
> J'ai essay plusieurs syntaxes mais ne voit pas comment rendre ce code > plus propre.
> switch ($genre) { > case /POLICIER/ { $type_genre=1 }; > case /POESIE/ { $type_genre=1 }; > case /ROMAN/ { $type_genre=1 }; > case /CONTE/ { $type_genre=1 }; > case /BD/ { $type_genre=1 }; > case /BANDE DESSINEE/ { $typ e_genre=1 }; > case /FANTASTIQUE/ { $type_genre=1 }; > case /SCIENCE-FICTION/ { $typ e_genre=1 }; > case /NOUVELLE/ { $type_genre=1 };
> case /DOCUMENTAIRE/ { $t ype_genre=2; } > case /RECIT/ { $type_genre=2; } > case /BIOGRAPHIE/ { $type_genre=2; }
> case /PERIODIQUE/ { $type_genre=3; }
> case /GROS CARACTERES/ { $typ e_genre=4; } > case /DOC BM/ { $type_genre=4; } > }
La syntaxe utilis e ci-dessus, me semble tr s bien... En quoi n'est-ce pas propre ?
En revanche, puisque vous testez des cha nes constantes et non pas des expressions r guli res, vous pourriez utiliser une table de hachage qui aura l'int r t d' tre beaucoup plus rapide. Un truc du genre :
d finir en d but de script et, pouquoi pas, dans une constante (ce que je n'ai pas fait ici).
Puis quand vous avez $genre qui contient votre genre, vous pouvez r cup rer le type via :
my $type = $type_by_genre{$genre};
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en fran ais - <http://perl.mines-albi.fr/>
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma synta xe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Merci
On 14 mar, 17:38, Paul Gaborit <Paul.Gabo...@invalid.invalid> wrote:
(at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT),
Eric BERTHOMIER <eberthomie...@gmail.com> crivait (wrote):
> j'ai utilis le module SWITH pour crire le code suivant qui me sort
> par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
> J'ai essay plusieurs syntaxes mais ne voit pas comment rendre ce code
> plus propre.
> switch ($genre) {
> case /POLICIER/ { $type_genre=1 };
> case /POESIE/ { $type_genre=1 };
> case /ROMAN/ { $type_genre=1 };
> case /CONTE/ { $type_genre=1 };
> case /BD/ { $type_genre=1 };
> case /BANDE DESSINEE/ { $typ e_genre=1 };
> case /FANTASTIQUE/ { $type_genre=1 };
> case /SCIENCE-FICTION/ { $typ e_genre=1 };
> case /NOUVELLE/ { $type_genre=1 };
> case /DOCUMENTAIRE/ { $t ype_genre=2; }
> case /RECIT/ { $type_genre=2; }
> case /BIOGRAPHIE/ { $type_genre=2; }
> case /PERIODIQUE/ { $type_genre=3; }
> case /GROS CARACTERES/ { $typ e_genre=4; }
> case /DOC BM/ { $type_genre=4; }
> }
La syntaxe utilis e ci-dessus, me semble tr s bien... En quoi n'est-ce
pas propre ?
En revanche, puisque vous testez des cha nes constantes et non pas des
expressions r guli res, vous pourriez utiliser une table de hachage qui
aura l'int r t d' tre beaucoup plus rapide. Un truc du genre :
(at) Mon, 14 Mar 2011 07:52:53 -0700 (PDT), Eric BERTHOMIER crivait (wrote):
> j'ai utilis le module SWITH pour crire le code suivant qui me sort > par les yeux !
Heu... Le module s'appelle Switch (et non pas switch ou SWITCH ou SWITH).
> J'ai essay plusieurs syntaxes mais ne voit pas comment rendre ce code > plus propre.
> switch ($genre) { > case /POLICIER/ { $type_genre=1 }; > case /POESIE/ { $type_genre=1 }; > case /ROMAN/ { $type_genre=1 }; > case /CONTE/ { $type_genre=1 }; > case /BD/ { $type_genre=1 }; > case /BANDE DESSINEE/ { $typ e_genre=1 }; > case /FANTASTIQUE/ { $type_genre=1 }; > case /SCIENCE-FICTION/ { $typ e_genre=1 }; > case /NOUVELLE/ { $type_genre=1 };
> case /DOCUMENTAIRE/ { $t ype_genre=2; } > case /RECIT/ { $type_genre=2; } > case /BIOGRAPHIE/ { $type_genre=2; }
> case /PERIODIQUE/ { $type_genre=3; }
> case /GROS CARACTERES/ { $typ e_genre=4; } > case /DOC BM/ { $type_genre=4; } > }
La syntaxe utilis e ci-dessus, me semble tr s bien... En quoi n'est-ce pas propre ?
En revanche, puisque vous testez des cha nes constantes et non pas des expressions r guli res, vous pourriez utiliser une table de hachage qui aura l'int r t d' tre beaucoup plus rapide. Un truc du genre :
d finir en d but de script et, pouquoi pas, dans une constante (ce que je n'ai pas fait ici).
Puis quand vous avez $genre qui contient votre genre, vous pouvez r cup rer le type via :
my $type = $type_by_genre{$genre};
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en fran ais - <http://perl.mines-albi.fr/>
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma synta xe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Merci
espie
In article , Eric BERTHOMIER wrote:
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/ serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout en majuscule me semble louche).
In article <237c7414-a555-4cb1-94bf-013f0f559927@t8g2000vbd.googlegroups.com>,
Eric BERTHOMIER <eberthomier00@gmail.com> wrote:
Ce sont bien des expressions régulières, en fait c'est un morceau de
chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) {
case /POLICIER/
case /POESIE/
case /ROMAN/
case /CONTE/
{ $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air
de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/
serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout
en majuscule me semble louche).
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/ serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout en majuscule me semble louche).
Erwan David
(Marc Espie) écrivait :
In article , Eric BERTHOMIER wrote:
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/ serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout en majuscule me semble louche).
et case /POLICIER|POESIE|ROMAN|CONTE/ { $type_genre=1 };
ça ne conviendrait pas ?
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé
espie@lain.home (Marc Espie) écrivait :
In article <237c7414-a555-4cb1-94bf-013f0f559927@t8g2000vbd.googlegroups.com>,
Eric BERTHOMIER <eberthomier00@gmail.com> wrote:
Ce sont bien des expressions régulières, en fait c'est un morceau de
chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) {
case /POLICIER/
case /POESIE/
case /ROMAN/
case /CONTE/
{ $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air
de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/
serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout
en majuscule me semble louche).
et
case /POLICIER|POESIE|ROMAN|CONTE/ { $type_genre=1 };
ça ne conviendrait pas ?
--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Ce sont bien des expressions régulières, en fait c'est un morceau de chaîne que je mets.
Je suis habitué à programmer en C, et aurait aimé retrouvé ma syntaxe
switch ($genre) { case /POLICIER/ case /POESIE/ case /ROMAN/ case /CONTE/ { $type_genre=1 };
Je dirais bien: si tu veux la syntaxe du C, fais du C ! ;)
Plus serieusement, si ton exemple contient les vrais regexps, tu m'as l'air de vouloir trouver des mots entiers, auquel cas /bPOLICIERb/ serait peut-etre plus approprie (voire meme /bPOLICIERb/i, le cote tout en majuscule me semble louche).
et case /POLICIER|POESIE|ROMAN|CONTE/ { $type_genre=1 };
ça ne conviendrait pas ?
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé
perlgenome
Bon à savoir : http://perl.developpez.com/faq/perl/?page=sectionB5#sect ionB56
Bon à savoir : http://perl.developpez.com/faq/perl/?page=sectionB5#sect ionB56