How a Perl5 program works

運行一個Perl5 程序分爲兩個階段:Complication time & Run time 。

Complication time

如下圖所示,由Source code最終解析成特定的數據結構 optree 。中間可以利用 BEGIN block 觸發Complication time 過程中的 Run time 即中斷編譯,執行代碼(其實是數據結構中的內容)

這裏寫圖片描述

Run time

按照特定順序運行 optree (optree 是一個由C定義的 tree 類型數據結構, 源於叫OP的數據結構 )中的數據。
OP:optree is a tree of C data structures all deriving from a structure called OP. Each op has a name, some flags, and zero or more children. Ops correspond to Perl 5 operations (called ppcodes) or Perl 5 data structures (scalars, arrays, hashes, et cetera).

BEGIN, CHECK, INIT 何時運行

BEGIN block: 於Complication time 運行, block 運行完回到上一編譯退出點。
CHECK block:於Complication time 之後, Run time 開始前運行,LIFO 順序執行。
INIT block:於 Run time 開始前運行。
Note: require, do, eval 文件 or block 中存在 INIT block or CHECK block, 將不被執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章