【发布时间】:2014-09-12 12:16:48
【问题描述】:
我有一个带有 while 循环的程序,它有几个点,某些条件需要采取一些操作,然后跳过剩余的迭代。
因为这总是相同的代码,我想把它放在一个子程序中,但是当我尝试使用'next;'时作为 sub 中的最后一条语句,我收到一个警告(Exiting subroutine via next at ...),尽管它似乎按预期工作。
即没有子:
while (#condition) {
## do stuff
if (#condition to skip iteration) {
## action
next;
}
## do more stuff, with the above block repeated several times
}
带子:
while (#condition) {
## do stuff
&skip if (#condition to skip iteration);
## do more stuff, with more calls to &skip
}
sub skip() {
## action
next;
}
block/sub 中的其余代码太短了,除了下一个之外都放了; sub 中的语句几乎违背了使用子例程的目标。
我的问题是:
- 正在使用“下一个;”以这种方式在子程序中可以,还是危险/不良做法?
- 有没有更好的方法从子例程中跳过其余的迭代?
- 如果没问题并且没有更好的方法,有没有办法抑制警告?
【问题讨论】:
标签: perl loops subroutine