Не беспокойтесь об игре в гольф, код у вас выглядит просто отлично (кроме других ответов об использовании defined
).Однако, если вы обнаружите, что повторяете этот паттерн, на ум приходят 2 вещи.
Первое очевидно, преобразовайте его в служебную функцию, чтобы у вас было my @list = expand($hit).
Второй вопроснемного глубже - но для меня пахнет больше, чем игра в гольф.Весь смысл итераторов в том, чтобы потреблять их по мере необходимости, поэтому, если вы обнаружите, что делаете это часто, вы уверены, что это действительно правильно?Возможно, вы перемещаете эти данные за пределы своего собственного API, поэтому вы ограничены в выборе других, но если у вас есть возможность использовать итератор, а не список, возможно, это будет более чистое решение.