如何通过指定其解析树来创建perl sub?

Eri*_*ikR 9 perl bytecode

鉴于CODE参考,是否有可能:

  1. 访问该CODE引用的解析树
  2. 通过指定CODE引用的解析树来创建一个新的CODE引用,该解析树可以包含1中返回的解析树的元素

通常我们通过指定源代码在perl中创建子例程,然后解析源代码并将其转换为解析树.

我想编写一个perl函数,它可以通过指定其解析树来创建子例程,并且该解析树可以从某个其他子例程的另一个解析树派生.

可能?

Joe*_*ger 7

我不知道你的问题的完整答案,但我知道Data :: Dumper可以解析代码引用.看看它的文档,我看到它B::Deparse用来做繁重的工作(B::模块是与编译器交互的模块).不幸的是,这似乎只会导致coderef的文本表示.

相反,我搜索了Opmetacpan并获得了更多有趣的可能性.由于我现在远远超出了我最深的Perl魔法,我会留给你看看那些结果.也许某些东西会有用.

  • 请务必查看[PadWalker`](http://p3rl.org/PadWalker),我认为这是很多人用来调查闭包的内容. (3认同)