Config :: Простое и постоянное назначение в perl - PullRequest
0 голосов
/ 14 апреля 2011

Я использую модуль Config::Simple и прагму constant. Я анализирую файл конфигурации и устанавливаю значения как постоянные. файл конфигурации теста (test.ini) содержит:

POP3SERVER='192.168.1.1'

когда я запускаю следующие операторы perl:

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";

Я получаю следующие строки:

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

Хеш содержит информацию, вы можете увидеть ее в первом print, но при присвоении в операторе constant не устанавливается

Что я делаю не так с кодом ??

Thnx

1 Ответ

3 голосов
/ 14 апреля 2011

«использование» происходит во время компиляции, вызов import_from () происходит во время выполнения (т. Е. после использования).

Обернуть вызов import_from в блок BEGIN:

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