2016-08-01 36 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...警告。这意味着你的数组没有在第五个索引上定义的元素。