我创建了自己的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时列出。
问题是什么?
提前谢谢!
答案 0 :(得分:5)
你的子程序没有对传递的参数做任何事情;相反,它正在设置包变量$Kernel::severalnines::Self
。
添加:
my ($Self) = @_;
位于子程序代码的顶部。
另外,添加:
use strict;
use warnings;
到模块文件的顶部(或者可能在package ...;
之后)。这会提醒您使用未声明的变量。