summaryrefslogtreecommitdiff
path: root/lib/Symbol.pm
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2003-08-27 19:52:27 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2003-08-27 19:52:27 +0000
commit836281693e84c3ca2dd4121737235a4934f2aa46 (patch)
treeff98c15ad52ab3593aae0754119c73b5102ad13f /lib/Symbol.pm
parentd3c54a8ee31058f7959aacfbb3392e838bcff1b6 (diff)
downloadperl-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.pm13
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;