bulk88 has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to wipe a package of its local symbols, but not affect any sub packages under that package, to try to reload a module. The @ISA I noticed stays the same with Devel::Peek, so I put in the undef on @ISA. Are there any problems with this code which I dont see?
use strict; use Data::Dumper; use Devel::Peek; BEGIN { package p1::p2; use vars qw|$VERSION @ISA $num2 |; $VERSION = 0.02; @ISA = qw( Exporter Inherit2); $num2 = 2; sub s2 { return 2;} package p1; use vars qw|$VERSION @ISA $num1 |; $VERSION = 0.01; @ISA = qw( Exporter Inherit1 ); sub s1 {return 1;} $num1 = 1; package main; } BEGIN{ no strict 'refs'; #print Dumper(\%{*p1::}); undef(@{'p1::ISA'}); #magical foreach(keys %p1::){ unless(length($_) > 2 && substr($_, -2, 2) eq '::'){ delete ${p1::}{$_}; } } #print Dumper(\%{*p1::}); }

Replies are listed 'Best First'.
Re: keep subpackges, delete root package
by Anonymous Monk on Jun 25, 2012 at 01:19 UTC

    Are there any problems with this code which I dont see?

    Its not clear why you need to do this, so its hard to know if there are problems with the code

      Read my original post for an answer AM.