Config :: perl中的简单和常量赋值

时间:2011-04-14 16:41:49

标签: perl constants config configuration-files ini

我正在使用Config::Simple模块和constant pragma。我正在解析配置文件并将值设置为常量。测试配置文件(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 个答案:

答案 0 :(得分:3)

“use”在编译时发生,调用import_from()在运行时发生(即使用之后)。

在BEGIN块中包含对import_from的调用:

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