我有以下PL和PM从ConfigReader.PM我如何使用`在Perl
文件Start.PL,ConfigReader.PM,BL.PM,Logger.PM
代码提取our`变量
Package ConfigReader
use Config::Simple;
use Logger;
our $configIni;
sub OpenConfigIni()
{
my ($cfg_ini_path)[email protected]_;
&Logger::LogMsg("**** OpenConfigIni starts ****","info");
&Logger::LogMsg($cfg_ini_path,"info");
$configIni = new Config::Simple($cfg_ini_path);
&Logger::LogMsg("**** OpenConfigIni ends ****","info");
}
其中Logger.PM是我使用Log4Perl编写的自定义模块。从Start.PL
Start.PL BL.PM
Package BL
use strict;
use Logger;
use ConfigReader;
my %chash = %{$ConfigReader::configIni->param(-block => "UserDetails")};
代码提取
代码提取物的入口点到我的应用程序,启动记录仪,ConfigReader
use strict;
use ConfigReader;
use Logger;
use BL;
&Logger::InitiateLogger();
&ConfigReader::OpenConfigIni("My_Config.ini");
my %qhash = %{$ConfigReader::configIni->param(-block => "ABC")};
问题是
当我运行Start.PL时,代码失败,出现以下错误
Can't call method "param" on an undefined value at BL.pm line 9
Compilation failed in require at Start.pl line 19.
BEGIN failed--compilation aborted at Start.pl line 19.
(忽略行号)
据指着BL.pm
my %chash = %{$ConfigReader::configIni->param(-block => "UserDetails")};
下如果我在start.Pl评论use Bl
,脚本工作正常,这意味着
my %qhash = %{$ConfigReader::configIni->param(-block => "ABC")};
在Start.PL中正常工作
什么,我想在这里实现的是
1. Use the ConfigReader.PM for handling the configuration related
2. Make use of the our $configIni in all modules
3. Initialing the Logger and ConfigReader form start.pl whioch is the entry point here
可能是什么问题就在这里?
OK可以正常工作,当我把代码'my%chash =%{$ ConfigReader :: configIni-> param(-block =>“UserDetails”)};'inisde一个方法。想知道为什么 – KK99
其Perl不是PERL –