Вот простой пример, который может помочь:
# perl
BEGIN { print "(" }
END { print ")" }
BEGIN { print "[" }
END { print "]" }
Это выводит: ([])
Если бы END
был FIFO, тогда BEGIN/END
не сработал бы хорошовместе.
Обновление - выдержка из Программирование на Perl 3-е издание, Глава 18: Компиляция - Авангардный компилятор, Ретро-интерпретатор , стр. 483:
Если в файле несколько блоков END, они выполняются в порядке, обратном их определению.То есть последний определенный блок END является первым, который выполняется после завершения вашей программы.Этот разворот позволяет соответствующим блокам BEGIN и END вкладываться так, как вы ожидаете, если вы их объедините в пару
/ I3az /