如何使用 B::Hooks 来操作 perl 解析器

How to use B::Hooks to manipulate the perl parser

我正在尝试使用 perl 解析器操作。看起来各种 B::Hooks 模块都是人们使用的。我在想:

  1. 对于(还)没有 XS 经验的人来说是最好的起点。有相关的博文吗?

  2. 新建一个算子需要多少工作量,例如:

    $a~>one~>two~>three

~> 会像 -> 一样工作,但它不会尝试调用 undef 而是简单地 return undef 到 LHS。

尽管源代码过滤器可以工作 -- 我更感兴趣的是了解如何在更深层次上操作解析器。

我认为您不能添加中缀运算符(操作数在运算符前后的运算符),更不用说符号运算符(与命名运算符相反),但您可以编写一个运算检查器来替换方法电话。这意味着您可以使 ->foo 表现不同。通过将模块编写为 pragma,可以将模块的效果限制在词法范围内(例如 { use mypragma; ...})。