OVH Cloud OVH Cloud

mod_perl

2 réponses
Avatar
Alexandre Jaquet
Hello,

J'ai une petite question avec mod_perl.

Je déclare dans mon code les variables suivantes :

our $lang,
our $LANG, our %VINYL, our %SESSION, our %SERVER ;

local our $query = CGI->new ;

loadLanguage ();

et j ai également la procédure suivante :

sub loadLanguage {
$lang = $query->param("lang");
$lang = uc ($lang);

open (FILE, "<$dirLang/$lang.conf") or die "cannot open file
$dirLang/$lang.conf";
while (<FILE>) {
(my $label, my $value) = split(/=/);
$SERVER{$label} = $value;
}
close (FILE);
}

La porté des variables $lang, $SERVER etc est bien re définit à chaque
requête ?

2 réponses

Avatar
Paul Gaborit
À (at) Thu, 30 Jun 2005 16:53:45 +0200,
Alexandre Jaquet <""alexjaquet"@[no spam]msn.com"> écrivait (wrote):
J'ai une petite question avec mod_perl.

Je déclare dans mon code les variables suivantes :

our $lang,
our $LANG, our %VINYL, our %SESSION, our %SERVER ;

local our $query = CGI->new ;

loadLanguage ();

et j ai également la procédure suivante :

sub loadLanguage {
$lang = $query->param("lang");
$lang = uc ($lang);

open (FILE, "<$dirLang/$lang.conf") or die "cannot open file
$dirLang/$lang.conf";
while (<FILE>) {
(my $label, my $value) = split(/=/);
$SERVER{$label} = $value;
}
close (FILE);
}

La porté des variables $lang, $SERVER etc est bien re définit à chaque
requête ?


La notion de portée des variables n'a de sens qu'au moment de la compilation
(c'est une notion statique).

En revanche, si vous voulez savoir si, par exemple, la valeur de $lang est
recalculée à chaque requête, cela dépend de la manière dont Apache utilise
votre script. En supposant que c'est un simple script CGI (utilisé via
PerlHandler Apache::Registry) alors, oui, la valeur est recalculée à chaque
requête.

PS: votre script est potentiellement dangeureux ! Vous utilisez la valeur du
paramètre 'lang' dans un appel système sans aucune vérification préalable.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Alexandre Jaquet
À (at) Thu, 30 Jun 2005 16:53:45 +0200,
Alexandre Jaquet <""alexjaquet"@[no spam]msn.com"> écrivait (wrote):

J'ai une petite question avec mod_perl.

Je déclare dans mon code les variables suivantes :

our $lang,
our $LANG, our %VINYL, our %SESSION, our %SERVER ;

local our $query = CGI->new ;

loadLanguage ();

et j ai également la procédure suivante :

sub loadLanguage {
$lang = $query->param("lang");
$lang = uc ($lang);

open (FILE, "<$dirLang/$lang.conf") or die "cannot open file
$dirLang/$lang.conf";
while (<FILE>) {
(my $label, my $value) = split(/=/);
$SERVER{$label} = $value;
}
close (FILE);
}

La porté des variables $lang, $SERVER etc est bien re définit à chaque
requête ?



La notion de portée des variables n'a de sens qu'au moment de la compilation
(c'est une notion statique).

En revanche, si vous voulez savoir si, par exemple, la valeur de $lang est
recalculée à chaque requête, cela dépend de la manière dont Apache utilise
votre script. En supposant que c'est un simple script CGI (utilisé via
PerlHandler Apache::Registry) alors, oui, la valeur est recalculée à chaque
requête.

PS: votre script est potentiellement dangeureux ! Vous utilisez la valeur du
paramètre 'lang' dans un appel système sans aucune vérification préalable.



Merci de ces infos, yep il faut que je parse correctement toutes les
variables :)