in reply to Re^8: I wrote an expression parser for PPI
in thread I wrote an expression parser for PPI

> the use dependencies are loaded and prototypes (like in Try::Tiny) etc are extracted.

By standard PPI or by your project?

update

> and realized why Perl don't cache its byte code.

Do you mean pre-compiling modules before a program starts?

This wouldn't work in general and IMHO even not add much speed.

I suppose re-compiling a module with every startup is negligible compared to starting Perl and loading the code from the file-system.

But I've seen attempts to work with a precompiled bytecode versions of a program/module for compatibility reasons.

IIRC they have the extension .plc, but I couldn't find the documentation yet.

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

  • Comment on Re^9: I wrote an expression parser for PPI

Replies are listed 'Best First'.
Re^10: I wrote an expression parser for PPI
by BerntB (Deacon) on Jan 12, 2026 at 10:08 UTC
    Uh, I don't understand what you are asking about PPI? But I wish I published earlier so you asked it a few weeks ago. :-) It is like this: A routine trawling some Perl code after use statements aren't hard to do with PPI, almost a oneliner. PPI works well for me. As it is, it will need to be two phases (first to find declarations). I will put up changes the coming weekend, I hope.

    This transpiler is in Perl, so it will be slower to compile than Perl (edit: for instance, see the deep dive into use:d files). In the end, it will probably be generation of a compiled file, with runtime etc. (Edit: I also saw tries with compiled bytecode, now I understand why it never became a thing.)

    Edit: I am trying to solve BEGIN now, that is trickier than sub prototypes. But totally doable in CL. The problem now, is that my attempt at a demonstration Perl transpiler to get something to compile to other languages is getting a too complex output.