我的Perl模块已找到但未应用

时间:2011-07-21 09:52:12

标签: linux perl module cgi

我创建了自己的Perl模块。我从文件Config.pm中引用它。

当我从Perl模块中获取内容并将其复制到Config.pm时,脚本会被适当地触发。但是当我把它包括在内时:

use severalnines;
Kernel::severalnines::config_severalnines($Self);

它没有被触发。我确信找到该文件是因为当我尝试更改文件名时,我收到错误(脚本标题的过早结束:)。

这是我想要包含在Config.pm中的文件(several nins.pm):

package Kernel::severalnines;

sub config_severalnines      
{                       
     $Self->{TicketAcl}->{'ACL-Name-Typer'} = {
        Properties => {Frontend => {Action => ['CustomerTicketMessage']},
             # current ticket match properties
             CustomerUser => {
                     Group_rw => [ 'Incident Management Severalnines', ],
             },
     },
     Possible => {
             Ticket => {
             Type => ['Incident',],},
     },
   };
}
1;

monthsnpm位于/usr/lib/perl5/5.12.3中,在执行perl -V时列出。

问题是什么?

提前谢谢!

1 个答案:

答案 0 :(得分:5)

你的子程序没有对传递的参数做任何事情;相反,它正在设置包变量$Kernel::severalnines::Self

添加:

my ($Self) = @_;

位于子程序代码的顶部。

另外,添加:

use strict;
use warnings;

到模块文件的顶部(或者可能在package ...;之后)。这会提醒您使用未声明的变量。