我有一个带有 if 语句的 for 循环,如下所示:
for (my $i=0; $i < $size; $i++) {
if ($array[$i] =~ m/_(B|P|BC|PM)/) {
#Remove from @array
splice(@array, $i, 1);
next;
}
#Get rid of numbers at the end
$array[$i] =~ s/_[0-9]+//;
}
我收到一条错误消息,在 if 语句的行上显示“在模式匹配中使用 @array 中未初始化的值......”。
当我从该行的正则表达式中删除交替时,错误就消失了。如果我注释掉整个 if 语句,则注释“#Get rid of numbers at the end”下的正则表达式不会产生任何错误。
我已经打印出@array 的所有值,一切看起来都很好。我试过没有括号和括号,而不是表达式中的括号,没有任何变化。有什么想法可能导致这种情况吗?