diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2003-08-27 19:52:27 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2003-08-27 19:52:27 +0000 |
commit | 836281693e84c3ca2dd4121737235a4934f2aa46 (patch) | |
tree | ff98c15ad52ab3593aae0754119c73b5102ad13f /lib/Symbol.pm | |
parent | d3c54a8ee31058f7959aacfbb3392e838bcff1b6 (diff) | |
download | perl-836281693e84c3ca2dd4121737235a4934f2aa46.tar.gz |
Add caveats and tests for Symbol::delete_package().
p4raw-id: //depot/perl@20922
Diffstat (limited to 'lib/Symbol.pm')
-rw-r--r-- | lib/Symbol.pm | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Symbol.pm b/lib/Symbol.pm index 98fb6763fe..5c0843e7d7 100644 --- a/lib/Symbol.pm +++ b/lib/Symbol.pm @@ -34,7 +34,6 @@ Symbol - manipulate Perl symbols and their names delete_package('Foo::Bar'); print "deleted\n" unless exists $Foo::{'Bar::'}; - =head1 DESCRIPTION C<Symbol::gensym> creates an anonymous glob and returns a reference @@ -68,6 +67,16 @@ C<Symbol::delete_package> wipes out a whole package namespace. Note this routine is not exported by default--you may want to import it explicitly. +=head1 BUGS + +C<Symbol::delete_package> is a bit too powerful. It undefines every symbol +that lives in the specified package and in its sub-packages. Since perl, +for performance reasons, does not perform a symbol table lookup each time +a function is called or a global variable is accessed, some code that has +already been loaded and that makes use of symbols in package C<Foo> may +stop working after you delete C<Foo>, even if you reload the C<Foo> module +afterwards. + =cut BEGIN { require 5.005; } @@ -77,7 +86,7 @@ require Exporter; @EXPORT = qw(gensym ungensym qualify qualify_to_ref); @EXPORT_OK = qw(delete_package geniosym); -$VERSION = 1.04; +$VERSION = '1.05'; my $genpkg = "Symbol::"; my $genseq = 0; |