将元素追加到数组元素中

时间:2012-07-10 14:08:08

标签: perl

在我的Perl程序中,我正在通过解码它来阅读电子邮件,将其拆分为数组。在下面的代码片段中,我正在阅读这些元素并将其附加到我发现“电子邮件”或“电话”或“GoToAssist”之前。

75  while(!($plain[$j] =~ /[Email|Phone|GoToAssist]/)){     
76      $plain[$x] .= " " . $plain[$j];
77      $j++;
78  }

但是,我收到以下错误:

Use of uninitialized value in concatenation (.) or string at test.pl line 76, <GEN0> line 921.
Use of uninitialized value in pattern match (m//) at test.pl line 77, <GEN0> line 921.

以前代码工作正常,我几乎没有改变任何东西。我想知道出了什么问题。

2 个答案:

答案 0 :(得分:3)

这不是错误,而是一个警告。

您收到此警告是因为$plain[$j]未定义。

您可以在追加之前使用以下代码检查是否已定义plain[$j]

while(!($plain[$j] =~ /[Email|Phone|GoToAssist]/)){     
     if(defined $plain[$j]){
         $plain[$x] .= "&nbsp;" . $plain[$j];
         $j++;
     }
 }

如果这没有帮助,请分享更多代码。

正如@Borodin指出的那样,你的正则表达式并不是你想要的。但这与你的问题无关。

答案 1 :(得分:0)

$plain[$j]是不确定的。添加一些打印语句,以确定$j是否符合您的预期。如果它是错的,那么找出它为什么以错误的值结束。这是正确的,找出为什么$plain[$j]最终会得到错误的值。