2011-04-14 3 views
0

J'utilise le module Config::Simple et le pragma constant. J'analyse un fichier de configuration et définit les valeurs comme constantes. le fichier de configuration de test (test.ini) contient:Config :: Affectation simple et constante en perl

POP3SERVER='192.168.1.1' 

quand je suis en cours d'exécution les déclarations de Perl de suivi:

use warnings; 
use strict; 

use Config::Simple; 
my %Cnf; 
Config::Simple->import_from('test.ini', \%Cnf); 
use constant TEST => scalar $Cnf{"default.POP3SERVER"}; 
print $Cnf{"default.POP3SERVER"},"\n"; 
print TEST . "\n"; 

Je reçois les lignes suivantes:

192.168.1.1 
Use of uninitialized value in concatenation (.) or string at ./algo.pl line 10. 

Le hachage contient les informations , vous pouvez le voir dans le premier print mais lorsqu'il est affecté dans l'instruction constant n'est pas défini

Qu'est-ce que je fais de mal sur le code ??

thnx

Répondre

3

"utiliser" arrive au moment de la compilation, appelant import_from() a lieu au moment de l'exécution (c.-à-après l'utilisation).

Wrap l'appel à import_from dans un bloc BEGIN:

my %Cnf; 
BEGIN { 
    Config::Simple->import_from('test.ini', \%Cnf); 
} 
use constant TEST => scalar $Cnf{"default.POP3SERVER"}; 
Questions connexes