假设每个包都依赖于之前的一切正确功能.END块旨在"清理和关闭"程序包完成之前可能需要处理的任何内容.但是这项工作可能依赖于之前启动的软件包的正确运行,如果允许它们运行其END块,则可能不再适用.
如果你以任何其他方式做到这一点,可能会有不好的错误.
这是一个可能有用的简单示例:
# perl
BEGIN { print "(" }
END { print ")" }
BEGIN { print "[" }
END { print "]" }
Run Code Online (Sandbox Code Playgroud)
这输出: ([])
如果END
是FIFO,那么BEGIN/END
就不能很好地协同工作.
更新 - 摘自Programming Perl第3版,第18章:编译 - 前卫编译器,复古解释器,第483页:
如果文件中有多个END块,则它们的定义顺序相反.也就是说,定义的最后一个END块是程序完成时执行的第一个END块.如果您将它们配对,这种反转可以使相关的BEGIN和END块以您期望的方式嵌套
/ I3az /
归档时间: |
|
查看次数: |
313 次 |
最近记录: |