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, 将不被执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值