У меня есть программа с циклом while, которая имеет несколько точек, где определенные условия требуют принятия какого-либо действия, а затем пропустить оставшуюся часть итерации.Завершение итерации цикла из подпрограммы
Поскольку это всегда будет тот же код, я хотел бы поместить его в подпрограмму, но когда я попробую использовать 'next;' в качестве заключительного заявления в подпункте я получаю предупреждение (Выход из подпрограммы через следующий в ...), хотя он работает так, как предполагалось.
т.е. без суб:
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;
}
Остальная часть кода в блоке/суб настолько коротка, что помещение все, но следующий; оператор в sub довольно много поражает объект использования подпрограммы.
Мой вопрос:
- Пользуется 'рядом;' в подпрограмме таким образом нормально, или это опасная/плохая практика?
- Есть ли лучший способ пропустить остальную итерацию из подпрограммы?
- Если это нормально, и нет лучшего способа, есть ли способ подавить предупреждение?
Зачем использовать круглые кронштейны на субпробеге? Нет необходимости использовать прототипирование или подписи здесь. Может быть, менее запутанно удалить их. – jmmeier