Sub后的Perl循环问题?

时间:2014-10-30 16:56:07

标签: perl

我在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中正确转换,并返回到主循环并正确分配。所以我不知道出了什么问题

1 个答案:

答案 0 :(得分:3)

您不会显示您的实际代码,因为您显示的内容有错误且无法运行。

大概是valueConvert(或它调用的东西)正在改变你的$ i或@list;我怀疑你使用全局变量而不是词法范围的变量。如果问题是$ i,而不是@list,你可以简单地做:

for (my $i = 0; $i <@list; $i++){

修复它。