我的 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行
答案 0 :(得分:3)
调用exit
会终止当前流程。
要离开循环,请使用last
。 Perl的循环控制命令称为last
,next
和redo
。
请注意,在您的代码段中,
的结果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;
}
进一步阅读: