OVH Cloud OVH Cloud

mod_perl et switch

7 réponses
Avatar
Chris
Bonjour,

Pourquoi l'instruction switch n'est elle pas applicabel en mod_perl ?
Quelqu'un a une explication ?

A+
chris

7 réponses

Avatar
Stephane Zuckerman
Pourquoi l'instruction switch n'est elle pas applicabel en mod_perl ?
Quelqu'un a une explication ?


Euh, je ne savais pas qu'il y avait une instruction switch en Perl... :-)

SWITCH:{
if cond1 { instructions; last SWITCH; }
if cond2 { instructions; last SWITCH; }
...
if condN { instructions; last SWITCH; }
}

(on peut évidemment éviter les lourdeurs de mes "if" en changeant la façon
d'opérer les tests)


--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)

Avatar
Chris
Stephane Zuckerman wrote:
Pourquoi l'instruction switch n'est elle pas applicabel en mod_perl ?
Quelqu'un a une explication ?



Euh, je ne savais pas qu'il y avait une instruction switch en Perl... :-)

SWITCH:{
if cond1 { instructions; last SWITCH; }
if cond2 { instructions; last SWITCH; }
...
if condN { instructions; last SWITCH; }
}

(on peut évidemment éviter les lourdeurs de mes "if" en changeant la façon
d'opérer les tests)




Ben ouais c'est quand même plus pratique :

use Switch;

switch ($val) {

case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /w+/ { print "pattern" }
case qr/w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (%hash) { print "entry in hash" }
case (&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}

( perl -MCPAN -eshell .... install Switch ... ) :-)

Et comme je m'amuses avec le mod_perl d'apache et que j'aime bien
l'instruction switch j'aurais aimé savoir pourquoi elle ne focntionne pas.

Ya tout dans perl alors pourquoi pas Switch ?

A+
chris


Avatar
Dav'
Il ne faut pas utiliser le module Switch, c'est un parser de source.
je ne connais pas bien les details mais en gros c'est pas bon ! Dans la
doc du module :
There are undoubtedly serious bugs lurking somewhere in code this funky
:-)




Stephane Zuckerman wrote:
Pourquoi l'instruction switch n'est elle pas applicabel en mod_perl ?
Quelqu'un a une explication ?



Euh, je ne savais pas qu'il y avait une instruction switch en Perl... : -)

SWITCH:{
if cond1 { instructions; last SWITCH; }
if cond2 { instructions; last SWITCH; }
...
if condN { instructions; last SWITCH; }
}

(on peut évidemment éviter les lourdeurs de mes "if" en changeant l a façon
d'opérer les tests)




Ben ouais c'est quand même plus pratique :

use Switch;

switch ($val) {

case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (@array) { print "number in list" }
case /w+/ { print "pattern" }
case qr/w+/ { print "pattern" }
case (%hash) { print "entry in hash" }
case (%hash) { print "entry in hash" }
case (&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}

( perl -MCPAN -eshell .... install Switch ... ) :-)

Et comme je m'amuses avec le mod_perl d'apache et que j'aime bien
l'instruction switch j'aurais aimé savoir pourquoi elle ne focntionne p as.

Ya tout dans perl alors pourquoi pas Switch ?

A+
chris




Avatar
Chris
Dav' wrote:
Il ne faut pas utiliser le module Switch, c'est un parser de source.
je ne connais pas bien les details mais en gros c'est pas bon ! Dans la
doc du module :
There are undoubtedly serious bugs lurking somewhere in code this funky
:-)



J'ai bien vu ! ;-)

bon j'ai compris que cela rentrait en conflit avec d'autres choses mais
bon je suis juste un peu décu par cela.

Sinon le mod_perl whaaaaaaaaoooooooo ca decoiffe en terme de rapidité !
<troll>
C'est plus rapide ou equivalent que du php ?
yen a qui ont des retour d'experience ?
</troll>

A+
chris

Avatar
Emmanuel Florac
Le Fri, 30 Dec 2005 09:25:43 +0100, Chris a écrit :


bon j'ai compris que cela rentrait en conflit avec d'autres choses mais
bon je suis juste un peu décu par cela.


La façon "perlienne" de faire c'est d'utiliser une "dispatch table" :

my %switch= ( toto => &titi, tata => sub { print "coucou" }, bozo =>
&bubu );

if (exists $switch($action)) { $switch($action)->(@params) }


--
entia non sont multiplicanda praeter necessitatem.
John Ponce of Cork.

Avatar
Chris
Emmanuel Florac wrote:


bon j'ai compris que cela rentrait en conflit avec d'autres choses mais
bon je suis juste un peu décu par cela.



La façon "perlienne" de faire c'est d'utiliser une "dispatch table" :

my %switch= ( toto => &titi, tata => sub { print "coucou" }, bozo =>
&bubu );

if (exists $switch($action)) { $switch($action)->(@params) }


Salut,


Elle est pas mal celle la et correspond bien a ce que je veux
faire

Merci

ET BONNE ANNEE A TOUS !

A+
chris


Avatar
FDA

Sinon le mod_perl whaaaaaaaaoooooooo ca decoiffe en terme de rapidité !


Lorsque les caches des microprocesseurs commencent à avoir une taille
telle que les interpréteurs y tiennent pour l'essentiel, il est certain
que les performances de ceux-ci deviennent inespérées :-)