Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Knowing when a code string contains code that will be executed at compile-time/end? (Update)

by LanX (Saint)
on Aug 15, 2020 at 09:16 UTC ( [id://11120770] : note . print w/replies, xml ) Need Help??


in reply to Knowing when a code string contains code that will be executed at compile-time/end?

I don't really understand what your goal is.

If you eval a code string just keep the string.

It's nearly impossible to statically parse Perl for compile time code, it can even be hidden inside a regex.

The only approach I could think of is to eval it and to make the compiler die if he encounters a use or BEGIN or similar. ◇

And I'm not even sure if that is feasable.

On another note: better don't rely on B::Deparse it's only a 95% solution.

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

) See Re: Vulnerabilities when editing untrusted code... (Komodo)

◇) probably with Safe

  • Comment on Re: Knowing when a code string contains code that will be executed at compile-time/end? (Update)

Replies are listed 'Best First'.
Re^2: Knowing when a code string contains code that will be executed at compile-time/end? (Update)
by perlancar (Hermit) on Aug 16, 2020 at 11:58 UTC
    You might hit the nail on the head here. I am working on code string templates, and want to separate the process that fills in the templates with the process that runs the filled-in code string. But I could've just passed the filled-in code string instead of the eval'ed+dumped+deparsed code string.