X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSymbol.pm;h=5c0843e7d7ba043aff293c98a1765c90d9a66c4e;hb=22dc90ad47bfa790b556c07d444ffa5b2626a4bf;hp=d5318085d82851e9b67c7a369423ba5af771d9a0;hpb=ae716a98930f0a80b96ee5d383780578d69d0830;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Symbol.pm b/lib/Symbol.pm index d531808..5c0843e 100644 --- a/lib/Symbol.pm +++ b/lib/Symbol.pm @@ -15,11 +15,8 @@ Symbol - manipulate Perl symbols and their names ungensym $sym; # no effect - # localize *FOO IO handle but not $FOO, %FOO, etc. - my $save_fooio = *FOO{IO} || geniosym; + # replace *FOO{IO} handle but not $FOO, %FOO, etc. *FOO = geniosym; - use_foo(); - *FOO{IO} = $save_fooio; print qualify("x"), "\n"; # "Test::x" print qualify("x", "FOO"), "\n" # "FOO::x" @@ -37,7 +34,6 @@ Symbol - manipulate Perl symbols and their names delete_package('Foo::Bar'); print "deleted\n" unless exists $Foo::{'Bar::'}; - =head1 DESCRIPTION C creates an anonymous glob and returns a reference @@ -71,6 +67,16 @@ C wipes out a whole package namespace. Note this routine is not exported by default--you may want to import it explicitly. +=head1 BUGS + +C 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 may +stop working after you delete C, even if you reload the C module +afterwards. + =cut BEGIN { require 5.005; } @@ -80,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;