2016-01-20 20 views
0

我不是一個Perl的專家,但我想編輯OTRS軟件,增加了對CustomerCompanyName柱支撐如下,但我得到的錯誤全局符號「%CustomerCompanyName」需要明確的包名

Global symbol "%CustomerCompanyName" requires explicit package name at /opt/otrs//Kernel/Output/HTML/Dashboard/TicketGeneric.pm line 1516. 

我已經googoled了一下,發現這是「我的」和變量聲明的問題,但過了一段時間,我還沒有發現我做錯了什麼。

改變通過這條線將適用於: https://github.com/OTRS/otrs/blob/1e908159a5dbdcfb94cc35d13bf15b04ac3e6a24/Kernel/Output/HTML/Dashboard/TicketGeneric.pm#L1510

 elsif ($Column eq 'CustomerCompanyName') { 

      # get customer name 
      my $CustomerCompanyName; 
      if ($Ticket{CustomerID}) { 
       $CustomerCompanyName = $Kernel::OM->Get('Kernel::System::CustomerCompany')->CustomerCompanyGet(
        CustomerID => $Ticket{CustomerID}, 
       ); 
       $CustomerCompanyName = $CustomerCompanyName{'CustomerCompanyName'}; 
      } 
      $DataValue = $CustomerCompanyName; 
     } 
+0

「CustomerCompanyGet」返回什麼類型的值? – toolic

+0

你期望'$ CustomerCompanyName {'CustomerCompanyName'}'包含什麼?鑑於你剛剛用'my'初始化它,它怎麼能包含任何東西呢? – tripleee

+1

$ CustomerCompanyName = $ CustomerCompanyName - > {'CustomerCompanyName'};假定CustomerCompanyGet返回散列引用 – Andrey

回答

3

你看到的是由線而引起的問題:

$CustomerCompanyName = $CustomerCompanyName{'CustomerCompanyName'}; 

,它看起來像你的意思是寫:

$CustomerCompanyName = $CustomerCompanyName->{'CustomerCompanyName'}; 

(注意取消引用箭頭)。

$CustomerCompanyName{'CustomerCompanyName'}是散列%CustomerCompanyName中的一個鍵,它與$CustomerCompanyName不同,它是您聲明的標量,然後給出一個值(推測爲散列ref)。

相關問題