我在Perl中编写程序。我在循环中调用sub。在调用sub之后,程序停止循环遍历@list中的剩余值。有什么想法吗?
for($i = 0; $i <@list; i++){
if($value{attrs[$i]} ne $otherValue{otherAttrs[$i]}){
$convert = valueConvert(otherValue{otherAttrs[$i]};
$value{attrs[$i]} = $convert;
}
}
这是子
sub valueConvert{
($mValue) = @_;
....
return $mValue
}
该值在sub中正确转换,并返回到主循环并正确分配。所以我不知道出了什么问题
答案 0 :(得分:3)
您不会显示您的实际代码,因为您显示的内容有错误且无法运行。
大概是valueConvert(或它调用的东西)正在改变你的$ i或@list;我怀疑你使用全局变量而不是词法范围的变量。如果问题是$ i,而不是@list,你可以简单地做:
for (my $i = 0; $i <@list; $i++){
修复它。