Eric J. Roode on Fri, 27 Jun 2003 17:32:39 -0400 |
On Fri, Jun 27, 2003 at 08:39:15AM -0400, mjd-perl-pm@plover.com wrote: > > So I thought I would delete all the subroutines and data by doing > > %{$module.'::'} = (). That seemed to work, > > You ar eon thin ice here. If I were you, I would use the standard > 'Symbol' module, which has a delete_package function in it. Then you > would have someone else to blame if it did not work. That's a good idea. I hadn't known about that module (well, I think I heard about it long ago, but had completely forgotten). I will look into that -- it's probably the right way to go. I did try a couple other amusing things. First, I thought I would be able to find out what modules a given module depends upon by watching what gets added to %INC. I cleared %INC and then required the module. But that seemed wasteful, since it reloads some packages that were already loaded. So I tied %INC to a class that kept track of additions to it, as well as FETCHes and EXISTSs (on the theory that you have to look at $INC{something} to decide whether or not to 'use' it. It didn't work. %INC must be modified directly (under the covers) by 'use' and 'require'. Oh well. The other thing I tried was to put the code to be reloaded into a Safe compartment (with no restrictions on the compartment). But when the included code did a 'use IO::File', it bombed out with an error that the IO module requires dynamically-loadable perl, and it claimed that I only had static. Does Safe somehow restrict the loading of dynamic modules? Apparently. Thanks, Mark. -- Eric J. Roode sdn@comcast.net $_ = reverse sort $/.r , qw p ekca ts lre reh uJ p, map $_ . $" , qw e p h tona e and print Attachment:
pgprhMznhCjsq.pgp
|
|