在数组元素PERL中使用未初始化的值$ intReason

时间:2016-08-01 01:02:58

标签: perl

所以我一直在使用数组的报告系统,但每当我尝试发送报告时,它都会给我这个

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
}

2 个答案:

答案 0 :(得分:5)

$strData中的字符串包含少于六个%,导致$intReason(和$arrNickname)未定义。

因此,

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

相当于

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

警告并且等同于

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

答案 1 :(得分:0)

在此之前:
my $intPID = $arrData[5];
尝试打印您将分配给$intPID的值 use Data::Dumper; print Dumper $arrData[5];
您将收到use of uninitialized...警告。这意味着您的数组没有在第五个索引上定义的元素。