http://qs321.pair.com?node_id=256537


in reply to Can you prevent MO=Deparse

Short of removing the Deparse module, is there a way to write a script which will prevent it from being dumped by DeParse?
In theory, no, since -MO=Deparse will mean that B::Deparse is processed before any other modules, and therefore at the top of the BEGIN chain, and since it sets the minus_c switch, no other code can be run (except for anything in a BEGIN/CHECK block of course). But inevitably the argument will come down to the fact that you can't hide perl's source (see. Here is a commercial obfuscator for an interesting discussion on the matter of source obfuscation).

This won't work in your case, but I thought I'd put it up for amusement value anyways

## place before use O 'Deparse'/-MO=Deparse BEGIN { unshift @INC => sub { ## 'empty' should be a valid module open(F, "empty") and return *F if $_[1] =~ /O.pm|B.pm/; }; }
If this code is placed before -MO=Deparse or a use O 'Deparse' then the deparsing will be skipped.
HTH

_________
broquaint