在我的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.
以前代码工作正常,我几乎没有改变任何东西。我想知道出了什么问题。
答案 0 :(得分:3)
这不是错误,而是一个警告。
您收到此警告是因为$plain[$j]
未定义。
您可以在追加之前使用以下代码检查是否已定义plain[$j]
:
while(!($plain[$j] =~ /[Email|Phone|GoToAssist]/)){
if(defined $plain[$j]){
$plain[$x] .= " " . $plain[$j];
$j++;
}
}
如果这没有帮助,请分享更多代码。
正如@Borodin指出的那样,你的正则表达式并不是你想要的。但这与你的问题无关。
答案 1 :(得分:0)
$plain[$j]
是不确定的。添加一些打印语句,以确定$j
是否符合您的预期。如果它是错的,那么找出它为什么以错误的值结束。这是正确的,找出为什么$plain[$j]
最终会得到错误的值。