Когда вы добавляете -n
, он добавляет for
цикл вокруг вашего кода.
Вы думаете, что он добавляет один такой:
for lines() {
# Your code here
}
Компилятор просто добавляет абстрактный синтаксисузлы дерева для зацикливания без фактического добавления блока.
(
# Your code here
) for lines()
(Это может быть истолковано как ошибка.)
Чтобы заставить его работать так же, как первый:
( # -n adds this
-> $_ { # <-- add this
# Your code here
}( $_ ) # <-- add this
) for lines() # -n adds this
Я пытался просто добавить пустой блок, но то, как компилятор добавляет цикл, приводит к тому, что он не работает.
В общем случае ENTER
и LEAVE
ограничены блоком{}
, но они также ограничиваются « файлом », если нет блока.
ENTER say 'ENTER file';
LEAVE say 'LEAVE file';
{
ENTER say ' ENTER block';
LEAVE say ' LEAVE block';
}
ENTER file
ENTER block
LEAVE block
LEAVE file
Поскольку в вашем коде нет блока, всенаходится в области « file ».