OVH Cloud OVH Cloud

Config commune pour plusieurs scripts...

4 réponses
Avatar
MaXX
Bonjour,
J'ai créé un petit CMS en (mod_)perl, je suis assez satisfait, mais le truc
qui me dérange c'est qu'il faut éditer chaque script en cas de modification
de la config.

J'aimerais avoir un fichier commun pour tous, j'ai donc vu 2 options:

1. une sorte de fichier INI ou conf que le script pomperais au démarrage; me
plait pas de trop, parser la config à chaque fois qu'une page doit être
générée c'est lourd..

2. un module ma_conf.pm que mod_perl pourait précharger, bien mais comment
exporter une variable (genre $user='moi';)? Pour une fonction je vois mais
une variable pas de trop... Mais je peux réécrire pour utiliser un hash ou
qqch du genre...

3. ? une idée ???

Comment faites/feriez vous dans ce cas?

Merci d'avance pour vos suggestions,
--
MaXX

4 réponses

Avatar
Jérémy JUST
On Fri, 11 Nov 2005 15:43:32 +0100
MaXX wrote:

2. un module ma_conf.pm que mod_perl pourait précharger, bien mais
comment exporter une variable (genre $user='moi';)? Pour une fonction
je vois mais une variable pas de trop...


Tu peux ne pas l'exporter, mais aller la chercher directement dans le
module de configuration, avec $Configuration::user (si ton fichier de
configuration définit le package Configuration).


--
Jérémy JUST

Avatar
Jacques Caron
Salut,

On Fri, 11 Nov 2005 15:43:32 +0100, MaXX wrote:

1. une sorte de fichier INI ou conf que le script pomperais au
démarrage; me plait pas de trop, parser la config à chaque fois
qu'une page doit être générée c'est lourd..


Rien ne t'empêche de ne la parser qu'au lancement d'Apache (ou plutôt au
premier appel d'un de tes modules mod_perl) et de stocker le résultat dans
une variable globale. Ou de faire un test sur la date de modification du
fichier (avec stat) et ne reparser le tout que si le fichier de conf a été
modifé.

2. un module ma_conf.pm que mod_perl pourait précharger, bien mais
comment exporter une variable (genre $user='moi';)?


perldoc perlmod sur comment exporter des données dans le package courant,
mais ce n'est probablement pas la meilleure solution. Un petit objet de
config serait plus adapté (perldoc perlmod, perldoc perltoot).

Sinon je suis persuadé qu'il y a déjà un module qui va bien dans CPAN pour
ça.

Jacques.
--
Oxado http://www.oxado.com/

Avatar
MaXX
Jérémy JUST wrote:
On Fri, 11 Nov 2005 15:43:32 +0100
MaXX wrote:
2. un module ma_conf.pm que mod_perl pourait précharger, bien mais
comment exporter une variable (genre $user='moi';)?
[...]


Tu peux ne pas l'exporter, mais aller la chercher directement dans le
module de configuration, avec $Configuration::user (si ton fichier de
configuration définit le package Configuration).
Noté, on m'a aussi suggéré use vars qw/$toto/; par mail, quoi qu'il en soit

je ferai les deux essais..

Merci,
--
MaXX


Avatar
MaXX
Salut,
Jacques Caron wrote:
Salut,
On Fri, 11 Nov 2005 15:43:32 +0100, MaXX wrote:
1. une sorte de fichier INI ou conf que le script pomperais au
démarrage; me plait pas de trop, parser la config à chaque fois
qu'une page doit être générée c'est lourd..
Rien ne t'empêche de ne la parser qu'au lancement d'Apache (ou plutôt au

premier appel d'un de tes modules mod_perl) et de stocker le résultat dans
une variable globale. Ou de faire un test sur la date de modification du
fichier (avec stat) et ne reparser le tout que si le fichier de conf a été
modifé.
En fait, j'aime bien l'idée du module car je peux aller le planquer en

dehors de ce qu'apache peut voir et sans que le chemin n'apparaisse dans le
script si il vient à l'idée de mon fidèle apache de servir le script en
texte clair suite à une giga gourde dans sa config... Bon à savoir tout de
même.

2. un module ma_conf.pm que mod_perl pourait précharger, bien mais
comment exporter une variable (genre $user='moi';)?
perldoc perlmod sur comment exporter des données dans le package courant,

mais ce n'est probablement pas la meilleure solution. Un petit objet de
config serait plus adapté (perldoc perlmod, perldoc perltoot).
Je me suis plongé dedans, les scripts en question on plus ou moins 40% de

code commun (copié/collé) un module pour gérer tout ça me semble pas mal,
alors tant qu'a faire pq pas la conf...

Sinon je suis persuadé qu'il y a déjà un module qui va bien dans CPAN pour
ça.
Je vais essayer de le faire moi même, je sais faut pas réinventer la roue,

mais en fabriquer une pour savoir comment on fait, j'aime bien...

Merci,
--
MaXX