2016-08-01 70 views
0

所以我已經工作的報告系統上使用數組,但每當我試圖發送報告它給了我這個

Use of uninitialized value $intReason in array element at Server/Systems/Messaging.pm line 26.

我不認爲這是一個更像是一個錯誤的錯誤,因爲一切正常,但它給了我這個。

這裏是要取消定義代碼

method handleSendReport($strData, $objClient){ 
    my @arrData = split('%', $strData); 
    my $intPID = $arrData[5]; 
    my $intReason = $arrData[6]; 
    my $arrNickname = $arrData[7]; 
    my @reasons = ("Swearing", "Sexual Language", "Racial Words", "Personal Info", "Email Address", "Real Name", "Name Calling", "Bad Penguin Name"); 
    $objClient->botSay($reasons[$intReason]); #Line 26 
} 
+0

檢查你的'$ strData'。它是否包含所有需要的字段?如果它只包含6%分隔的字段,那麼'$ intReason'和'$ arrNickname'將被初始化。 –

+0

你是什麼意思由'%-' –

+0

你正在分割'$ strData'字符'%' –

回答

5

$strData的字符串包含少於六個%,造成$intReason(和$arrNickname)。

這樣,

$objClient->botSay($reasons[$intReason]); 

相當於

$objClient->botSay($reasons[undef]); 

,警告和否則相當於

$objClient->botSay($reasons[0]); 
0

這一行之前:
my $intPID = $arrData[5];
Ť ry打印您將分配的值$intPID
use Data::Dumper; print Dumper $arrData[5];
您將收到use of uninitialized...警告。這意味着你的數組沒有在第五個索引上定義的元素。