Как мне указать код "before-the loop" при использовании "perl -ne", не прибегая к блокам BEGIN / END или заменяя "-n" на фактически записанный цикл while
?
Чтобы объяснить подробно:
Скажем, у меня есть следующий код Perl:
use MyModule;
SETUP_CODE;
while (<>) {
LOOP_CODE;
}
FINAL_CODE;
Как я могу заменить его однострочным использованием perl -ne
?
Конечно, часть цикла обрабатывается самим -n
, тогда как FINAL_CODE
можно сделать, используя хитрость добавления "} { FINAL_CODE
" в конце;тогда как оператор use
может быть обработан с помощью параметра "-M
".
Итак, если бы у нас не было SETUP_CODE
до цикла, я мог бы написать следующее:
perl -MMyModule -ne 'LOOP_CODE } { FINAL_CODE'
Но как мы можем вставить SETUP_CODE
здесь?
Единственная идея, которую я имею, состоит в том, чтобы попытаться добавить ее после цикла через блок BEGIN{}
, ala
perl -MMyModule -ne 'LOOP_CODE } BEGIN { SETUP_CODE } { FINAL_CODE'
Но это кажется в лучшем случае хакерским.
Любой другойрешение?
Просто чтобы прояснить ситуацию - я уже знаю Я могу сделать это, записав цикл while
вместо использования "-n" или используя BEGIN /END блокирует (и может даже согласиться с тем, что с определенных точек зрения делать «время», вероятно, лучше).
Меня интересует, есть ли другое решение.