in reply to Re: Optimise Perl code pl file
in thread Optimise Perl code pl file

Thank you Monks, I wish I could contribute back some expertise, but perhaps from the nature of my post my solutions to problems might perhaps be pretty out there.

Given our project, the scripts we want to create have pretty basic execution paths and so it is feasible to execute them to "touch" the nodes that we want to keep in the tree. I'll have a burl at the Monk suggestion to this effect above.

I think the solution posted above this was a suggestion to use AUTOLOAD to boot only the code we want. My proposition is to produce a Perl text file which has been derived from a very large collection of shared libraries. Maybe I can use AUTOLOAD to read only the code we want, then use Deparse to "export" it. This would then give us only the code we want. Is this the implication?

We are doing this because the OOP heirarchy we use is really vast and we want to spit out Perl files which should be very short and hopefully fairly boring and readable. At the moment they are pretty elaborate.

As a side note, I have seen Deparse used to help de-obfuscate code. We also think this might be a good exercise as we can then audit the little scripts which are the end-point of our Perl script-writing package.

Best,
bobajobRob

Replies are listed 'Best First'.
Re: Re: Re: Optimise Perl code pl file
by ysth (Canon) on Dec 01, 2003 at 08:17 UTC
    Deparse is not perfect and it tends to develop new bugs with new perl releases (because the structure of the optree gets changed without always remembering Deparse). It also has large areas such as closures where it just won't easily work. It also will strip all comments and pod (including copyright statements or licensing terms, which may be a legal issue).

    Update: if it is any comfort, when Deparse breaks it usually breaks badly enough to get noticed and fixed before a perl release. And it probably is your best bet for accomplishing the job (with the possible exception of figuring out some way to use AutoSplit.)