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

Nic*_*oft 0 linux perl cgi module

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

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

use severalnines;
Kernel::severalnines::config_severalnines($Self);
Run Code Online (Sandbox Code Playgroud)

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

这是我要包含在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;
Run Code Online (Sandbox Code Playgroud)

onesnines.pm位于/usr/lib/perl5/5.12.3中,在执行perl -V时列出.

问题是什么?

先感谢您!

yst*_*sth 5

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

加:

my ($Self) = @_;
Run Code Online (Sandbox Code Playgroud)

在子程序代码的顶部.

另外,添加:

use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)

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