如果条件不起作用

时间:2014-04-29 05:53:45

标签: perl catalyst

我的 Perl 催化剂项目中有代码

for (my $i=1; $i<=$periodsOrg; $i++){
    if ( $vals_repayment_org->{ending_balance} <= 0) {
        exit;
    }
}

即;如果$vals_repayment_org->{ending_balance}小于或等于0,我需要退出循环。 但是它在第一次从循环中退出但是值不小于或等于0.我得到的日志是

  

EndBal:249747.596957166

     

Apr 29 05:55:43 [ERROR] ModPerl :: Util :: exit:(120000)exit被调用   在   /home/wesolnsus/public_html/application/lib/wealthe/Controller/vbo/mortgage_reduction.pm   第180行

1 个答案:

答案 0 :(得分:3)

调用exit会终止当前流程

要离开循环,请使用last。 Perl的循环控制命令称为lastnextredo

请注意,在您的代码段中,

的结果
if ($vals_repayment_org->{ending_balance} <= 0) {
    exit;
}

不受循环变量$i的影响,因此条件应放在循环之外。

如果$vals_repayment_org->{ending_balance} 大于而不是零,则无法想象条件评估为真 - 您必须提供进一步的背景信息来证明这一点,例如:像

my $ending_balance = $vals_repayment_org->{ending_balance};
if ($ending_balance <= 0) {
    warn "Ending Balance: $ending_balance";
    exit;
}

进一步阅读: