Hash utilisant une constante ... Résolu
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.perl ]
Bonjour,
J'ai eu un problème avec les hash que j'ai résolu en cherchant sur
google.
Je viens ici afin que l'on m'explique ce qui se passe.
J'ai un module qui valide les paramètres reçus (CGI)
use constant PRM_UN => "po";
my $params = $cgi->Vars;
if( $params->{ PRM_UN } eq $params->{ "po" } ) {
print "aucun problème";
} else {
print "Surprenant!!";
}
Ça affichait (ça l'affiche encore d'ailleurs...) "Surprenant!!"
Cependant
if( $params->{ PRM_UN . "" } eq $params->{ "po" } ) {
print "aucun problème";
} else {
print "Surprenant!!";
}
affiche "aucun problème"
Où est le problème!!
Pourtant, dans le script j'ai une dizaine de paramètres définis avec
use constant
et il y en a seulement un qui me cause des ennuis. La constante se
nomme POOL_PRM_POSITION
et sa valeur est "po".
J'ai un foreach dans lequel j'ai des "if" et "elsif" pour chacun de
mes paramètres.
J'ai vérifié le contenu du hash avec Data::Dumper, tout est beau.
Est-ce que la valeur "po" est particulière pour perl ???
Est-ce que le nom POOL_PRM_POSITION est utilisé par perl ???
Est-ce le fait que j'utilise une référence ???
Est-ce les extra-terrestres vont débarquer chez moi ???
Dois-je ajouter systématiquement <. ""> à la clef lorsque celle-ci est
une constante ?
Ou peut-être
my $var = PRM_UN;
$param->{ $var };
Merci d'éclairer ma lanterne
Luc
P.S.
J'ai trouvé cette solution à cet endroit :
http://mailman.anu.edu.au/pipermail/perl.sig/2005-June/000009.html

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|