如果有操作码,是否可以创建perl源代码?

例如

perl -MO=Concise -e "print 123"

将输出操作码:
6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <@> print vK ->6
3        <0> pushmark s ->4
4        <$> const[IV 123] s ->5

我想以某种方式扭转这一局面。

最佳答案

如果用“拥有操作码”来表示“拥有操作码树”

虽然B::Concise试图给出操作码树的准确表示,但是B::Deparse接受操作码树并从中生成源代码。

$ perl -MO=Deparse -e'$x && print'
print $_ if $x;
-e syntax OK

尽管有一些限制,但它相当不错。

如果“具有操作码”是指“具有B::Concise的输出”

鉴于B::Concise试图做到非常完整,这也许是可能的,但是我认为缺少一些信息。我很确定没有什么可以在CPAN上做到这一点的,因为我从未听说过打破blead的行为(您希望定期发生这种事情)。

关于Perl-操作码到源代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27629176/

10-12 17:51