2011-07-21 19 views
0

我創建了我自己的Perl模塊。我從文件Config.pm中引用它。我的Perl模塊被找到但沒有被應用

當我從我的Perl模塊獲取內容並將其複製到Config.pm中時,該腳本被適當地觸發。但是當我這樣包含它時:

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

它沒有被觸發。我相信找到該文件是因爲當我嘗試更改文件的名稱時,出現錯誤(腳本標題提前結束:)。

這是我想在Config.pm包含的文件(severalnines.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; 

的severalnines.pm位於/usr/lib/perl5/5.12.3做perl -V。

還有什麼問題呢?

預先感謝您!

+0

命名您的模塊「配置」是一個壞主意 - 這樣的模塊已經存在。 –

+0

這只是名稱的一部分,它真的很重要嗎? – Nicsoft

+0

軟件包配置不好,package Kernel :: Config可以。 –

回答

5

你的子程序沒有對它傳遞的參數做任何事情;而是設置一個包變量$Kernel::severalnines::Self

地址:

my ($Self) = @_; 

在你的子程序代碼的頂部。

此外,添加:

use strict; 
use warnings; 

到你的模塊文件的頂部(或者package ...;後)。這會提醒您您正在使用未聲明的變量。

+0

謝謝!添加我的($ Self)= @_;工作。不明白爲什麼,但我很高興。添加嚴格和警告並沒有告訴醫生我有未申報的變量,我仍然得到了同樣的錯誤信息,正如我在我的文章中所解釋的。 – Nicsoft

+0

Nicsoft:你沒有在你的文章中提出任何關於錯誤信息的提示... – ysth

+0

是的,我可以,我可以在你回答的同時更新這個帖子,所以你可能看不到它。現在我明白了爲什麼它沒有關於參數。 – Nicsoft