On Tue, 1 Feb 2005 23:32:42 +0100 "ecureuil" wrote:
un des require est la configuration des variables communes à tous les programmes de l'interface web...
J'ai par exemple la variable dans wwwconf : $fax_incoming = '/var/spool/fax/incoming';
Tu peux utiliser les noms pleinement qualifiés des variables:
<<<<< package wwwconf ;
use strict ;
our $fax_incoming = '/var/spool/fax/incoming' ;
je fais donc dans pratiquement tous les pgms : require wwwconf; pour avoir le chemin des fax entrants...
Puis:
<<<<< chdir $wwwconfig::fax_incoming ;
Vous programmez comment ce genre de choses?
Pour la configuration, j'ai plutôt tendance à utiliser un hash global (voir « %ENV », ce qui est très pratique, mais pas forcément très propre).
-- Jérémy JUST
ecureuil
"Jérémy JUST" a écrit dans le message de news:
| On Tue, 1 Feb 2005 23:32:42 +0100 | "ecureuil" wrote: | | > un des require est la configuration des variables communes à tous les | > programmes de l'interface web... | > | > J'ai par exemple la variable dans wwwconf : | > $fax_incoming = '/var/spool/fax/incoming'; | | Tu peux utiliser les noms pleinement qualifiés des variables: | | <<<<< | package wwwconf ; | | use strict ; | | our $fax_incoming = '/var/spool/fax/incoming' ; | >>>>> | | | > je fais donc dans pratiquement tous les pgms : require wwwconf; | > pour avoir le chemin des fax entrants... | | Puis: | | <<<<< | chdir $wwwconfig::fax_incoming ; | >>>>> | | | > Vous programmez comment ce genre de choses? | | Pour la configuration, j'ai plutôt tendance à utiliser un hash global | (voir « %ENV », ce qui est très pratique, mais pas forcément très | propre). |
Je viens encore pour avoir des conseils...!
Je vais essayer d'expliquer ce que j'ai fait... Ce que je viens de faire fonctionne à peu près!
Je modifie tous les pgms d'une interface web en ajoutant use strict. Dans l'interface web de départ, il n'y avait ni -w, ni -T ni use strict! J'ai également ajouter un certain nombre de fonctions dans tous les pgms!
Tous les pgms de l'interface web ont 2 require. - un pour tous les paramètres de configuration... (chemin d'accès pour lire les fichiers, chemin pour les pgm employés, ..) C'est un fichier qui normalement doit se mettre à jour à l'installation de l'interface selon la distribution utilisée. - un pour faire des vérifications d'existence de programme, pour imprimer les messages d'erreur de configuration,... Dans ce fichier, il n'y a que des sub (fonction) qui sont appelés par tous les programmes de l'interface web.
Le premier pgm (paramètre de configuration) : wwwconf (/etc/mgetty+sendfax/) Le deuxième (fonction) : wwwsub (/usr/lib/mgetty+sendfax)
Je n'ai pas touché à wwwsub
wwwconf : Je l'ai appelé wwwconf.pm J'ai ajouté : package wwwconf; use strict; use Exporter; our @ISA=('Exporter'); our @EXPORT_OK=('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay'); Pour toutes les variables, j'ai mis "our" devant pour les rendre global...
Pgm de l'interface web : #!/usr/bin/perl -wT unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1) use wwwconf ('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay'); use strict;
# initialisation des données servant dans le pgm avec "my" my @dx; my $http_lang; my $libel_indexpagenot; my $DATEI; my %pages; my %basename; my %sender; my %date; my %datexx; my $id; my $protz; my $date; ... #---------------------------------------------------------- # GETTEXT # traitement des variables pour la langue d'affichage # cela fonctionne bien! ... # read common subroutine file (toutes les variables dont on se sert dans ce require ont été déclarées avec our) require "/usr/lib/mgetty+sendfax/wwwsub.pl"; .... # début traitement
(1) j'avais mis le wwwconf.pm dans "/etc/mgetty+sendfax" mais cela ne fonctionnait pas... . msg d'erreur : Can't locate wwwconf.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl) at /home/e-smith/files/ibays/fax-voice1/cgi-bin/fax/viewfax.cgi line 52.
Si je fais un print de @INC dans le pgm : inc : --/etc/mgetty+sendfax /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl-- --/etc/mgetty+sendfax-- est bien ajouté à @INC et je fais le "use wwwconf " après le unshift : j'ai dû raté un truc!
J'ai donc copié wwwconf.pm dans un des répertoires présent dans (@INC et cela fonctionne.
J'aimerai donc avoir vitre avis sur la façon dont j'ai procédé... Vous feriez comment ce genre de choses?
Merci anne
"Jérémy JUST" <jeremy_just@netcourrier.com> a écrit dans le message de news:
20050201235348.3b199975@norbert.inapg.inra.fr...
| On Tue, 1 Feb 2005 23:32:42 +0100
| "ecureuil" <gentil_ecureuil@hotmail.com> wrote:
|
| > un des require est la configuration des variables communes à tous les
| > programmes de l'interface web...
| >
| > J'ai par exemple la variable dans wwwconf :
| > $fax_incoming = '/var/spool/fax/incoming';
|
| Tu peux utiliser les noms pleinement qualifiés des variables:
|
| <<<<<
| package wwwconf ;
|
| use strict ;
|
| our $fax_incoming = '/var/spool/fax/incoming' ;
| >>>>>
|
|
| > je fais donc dans pratiquement tous les pgms : require wwwconf;
| > pour avoir le chemin des fax entrants...
|
| Puis:
|
| <<<<<
| chdir $wwwconfig::fax_incoming ;
| >>>>>
|
|
| > Vous programmez comment ce genre de choses?
|
| Pour la configuration, j'ai plutôt tendance à utiliser un hash global
| (voir « %ENV », ce qui est très pratique, mais pas forcément très
| propre).
|
Je viens encore pour avoir des conseils...!
Je vais essayer d'expliquer ce que j'ai fait...
Ce que je viens de faire fonctionne à peu près!
Je modifie tous les pgms d'une interface web en ajoutant use strict.
Dans l'interface web de départ, il n'y avait ni -w, ni -T ni use strict!
J'ai également ajouter un certain nombre de fonctions dans tous les pgms!
Tous les pgms de l'interface web ont 2 require.
- un pour tous les paramètres de configuration... (chemin d'accès pour lire
les fichiers, chemin pour les pgm employés, ..)
C'est un fichier qui normalement doit se mettre à jour à l'installation de
l'interface selon la distribution utilisée.
- un pour faire des vérifications d'existence de programme, pour imprimer
les messages d'erreur de configuration,...
Dans ce fichier, il n'y a que des sub (fonction) qui sont appelés par tous
les programmes de l'interface web.
Le premier pgm (paramètre de configuration) : wwwconf
(/etc/mgetty+sendfax/)
Le deuxième (fonction) : wwwsub (/usr/lib/mgetty+sendfax)
Je n'ai pas touché à wwwsub
wwwconf :
Je l'ai appelé wwwconf.pm
J'ai ajouté :
package wwwconf;
use strict;
use Exporter;
our @ISA=('Exporter');
our
@EXPORT_OK=('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay');
Pour toutes les variables, j'ai mis "our" devant pour les rendre global...
Pgm de l'interface web :
#!/usr/bin/perl -wT
unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1)
use wwwconf
('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay');
use strict;
# initialisation des données servant dans le pgm avec "my"
my @dx;
my $http_lang;
my $libel_indexpagenot;
my $DATEI;
my %pages;
my %basename;
my %sender;
my %date;
my %datexx;
my $id;
my $protz;
my $date;
...
#----------------------------------------------------------
# GETTEXT
# traitement des variables pour la langue d'affichage
# cela fonctionne bien!
...
# read common subroutine file (toutes les variables dont on se sert dans ce
require ont été déclarées avec our)
require "/usr/lib/mgetty+sendfax/wwwsub.pl";
....
# début traitement
(1) j'avais mis le wwwconf.pm dans "/etc/mgetty+sendfax" mais cela ne
fonctionnait pas... .
msg d'erreur :
Can't locate wwwconf.pm in @INC (@INC contains:
/usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1
/usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1
/usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0
/usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux
/usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl) at
/home/e-smith/files/ibays/fax-voice1/cgi-bin/fax/viewfax.cgi line 52.
Si je fais un print de @INC dans le pgm :
inc : --/etc/mgetty+sendfax /usr/lib/perl5/5.6.1/i386-linux
/usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux
/usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux
/usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1
/usr/lib/perl5/vendor_perl--
--/etc/mgetty+sendfax-- est bien ajouté à @INC et je fais le "use wwwconf "
après le unshift : j'ai dû raté un truc!
J'ai donc copié wwwconf.pm dans un des répertoires présent dans (@INC et
cela fonctionne.
J'aimerai donc avoir vitre avis sur la façon dont j'ai procédé...
Vous feriez comment ce genre de choses?
| On Tue, 1 Feb 2005 23:32:42 +0100 | "ecureuil" wrote: | | > un des require est la configuration des variables communes à tous les | > programmes de l'interface web... | > | > J'ai par exemple la variable dans wwwconf : | > $fax_incoming = '/var/spool/fax/incoming'; | | Tu peux utiliser les noms pleinement qualifiés des variables: | | <<<<< | package wwwconf ; | | use strict ; | | our $fax_incoming = '/var/spool/fax/incoming' ; | >>>>> | | | > je fais donc dans pratiquement tous les pgms : require wwwconf; | > pour avoir le chemin des fax entrants... | | Puis: | | <<<<< | chdir $wwwconfig::fax_incoming ; | >>>>> | | | > Vous programmez comment ce genre de choses? | | Pour la configuration, j'ai plutôt tendance à utiliser un hash global | (voir « %ENV », ce qui est très pratique, mais pas forcément très | propre). |
Je viens encore pour avoir des conseils...!
Je vais essayer d'expliquer ce que j'ai fait... Ce que je viens de faire fonctionne à peu près!
Je modifie tous les pgms d'une interface web en ajoutant use strict. Dans l'interface web de départ, il n'y avait ni -w, ni -T ni use strict! J'ai également ajouter un certain nombre de fonctions dans tous les pgms!
Tous les pgms de l'interface web ont 2 require. - un pour tous les paramètres de configuration... (chemin d'accès pour lire les fichiers, chemin pour les pgm employés, ..) C'est un fichier qui normalement doit se mettre à jour à l'installation de l'interface selon la distribution utilisée. - un pour faire des vérifications d'existence de programme, pour imprimer les messages d'erreur de configuration,... Dans ce fichier, il n'y a que des sub (fonction) qui sont appelés par tous les programmes de l'interface web.
Le premier pgm (paramètre de configuration) : wwwconf (/etc/mgetty+sendfax/) Le deuxième (fonction) : wwwsub (/usr/lib/mgetty+sendfax)
Je n'ai pas touché à wwwsub
wwwconf : Je l'ai appelé wwwconf.pm J'ai ajouté : package wwwconf; use strict; use Exporter; our @ISA=('Exporter'); our @EXPORT_OK=('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay'); Pour toutes les variables, j'ai mis "our" devant pour les rendre global...
Pgm de l'interface web : #!/usr/bin/perl -wT unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1) use wwwconf ('$indexpage','$fax_incoming','$www_logo','%maxpages','$allow_delete_incoming','$delete','$fic_lang_traduc','$lib_ibay'); use strict;
# initialisation des données servant dans le pgm avec "my" my @dx; my $http_lang; my $libel_indexpagenot; my $DATEI; my %pages; my %basename; my %sender; my %date; my %datexx; my $id; my $protz; my $date; ... #---------------------------------------------------------- # GETTEXT # traitement des variables pour la langue d'affichage # cela fonctionne bien! ... # read common subroutine file (toutes les variables dont on se sert dans ce require ont été déclarées avec our) require "/usr/lib/mgetty+sendfax/wwwsub.pl"; .... # début traitement
(1) j'avais mis le wwwconf.pm dans "/etc/mgetty+sendfax" mais cela ne fonctionnait pas... . msg d'erreur : Can't locate wwwconf.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl) at /home/e-smith/files/ibays/fax-voice1/cgi-bin/fax/viewfax.cgi line 52.
Si je fais un print de @INC dans le pgm : inc : --/etc/mgetty+sendfax /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0/i386-linux /usr/lib/perl5/site_perl/5.6.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/vendor_perl/5.6.1 /usr/lib/perl5/vendor_perl-- --/etc/mgetty+sendfax-- est bien ajouté à @INC et je fais le "use wwwconf " après le unshift : j'ai dû raté un truc!
J'ai donc copié wwwconf.pm dans un des répertoires présent dans (@INC et cela fonctionne.
J'aimerai donc avoir vitre avis sur la façon dont j'ai procédé... Vous feriez comment ce genre de choses?
Merci anne
Denis -esp2008-
Bonjour,
unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1) use wwwconf
Il me semble que le unshift est traité à l'exécution, alors que le use l'est à la compilation.
Il faut soit utiliser un require, soit appeler perl avec l'option -I/etc/mgetty+sendfax ou encore passer par la directive use lib (je ne me souviens plus du fonctionnement, je suis assez utilisateur du -I bien qu'il ne soit pas particulièrement recommandé).
Bonne chance,
-- Denis
Bonjour,
unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1)
use wwwconf
Il me semble que le unshift est traité à l'exécution, alors que le use
l'est à la compilation.
Il faut soit utiliser un require, soit appeler perl avec l'option
-I/etc/mgetty+sendfax ou encore passer par la directive use lib (je ne me
souviens plus du fonctionnement, je suis assez utilisateur du -I bien
qu'il ne soit pas particulièrement recommandé).
unshift (@INC, "/etc/mgetty+sendfax"); # y-a un problème!!! (1) use wwwconf
Il me semble que le unshift est traité à l'exécution, alors que le use l'est à la compilation.
Il faut soit utiliser un require, soit appeler perl avec l'option -I/etc/mgetty+sendfax ou encore passer par la directive use lib (je ne me souviens plus du fonctionnement, je suis assez utilisateur du -I bien qu'il ne soit pas particulièrement recommandé).
Je fais ça car le chemin de mes librairies varie entre les machines et qu'il est donc dans un fichier de conf.
Par contre je ne sais pas si ça marche à travers un cgi . De plus je ne suis pas certain de l'impact en terme de performance . D'ailleurs si quelqu'un en sait quelque chose ...
Je fais ça car le chemin de mes librairies varie entre les machines et
qu'il est donc dans un fichier de conf.
Par contre je ne sais pas si ça marche à travers un cgi . De plus je
ne suis pas certain de l'impact en terme de performance . D'ailleurs si
quelqu'un en sait quelque chose ...
Je fais ça car le chemin de mes librairies varie entre les machines et qu'il est donc dans un fichier de conf.
Par contre je ne sais pas si ça marche à travers un cgi . De plus je ne suis pas certain de l'impact en terme de performance . D'ailleurs si quelqu'un en sait quelque chose ...