我正在使用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
答案 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"};