This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Be more robust if no hostname or domainname
[perl5.git] / lib / Symbol.pm
index 5ed6b26..15c211c 100644 (file)
@@ -46,7 +46,7 @@ C<Symbol::qualify> turns unqualified symbol names into qualified
 variable names (e.g. "myvar" -E<gt> "MyPackage::myvar").  If it is given a
 second parameter, C<qualify> uses it as the default package;
 otherwise, it uses the package of its caller.  Regardless, global
-variable names (e.g. "STDOUT", "ENV", "SIG") are always qualfied with
+variable names (e.g. "STDOUT", "ENV", "SIG") are always qualified with
 "main::".
 
 Qualification applies only to symbol names (strings).  References are
@@ -70,7 +70,7 @@ require Exporter;
 @EXPORT = qw(gensym ungensym qualify qualify_to_ref);
 @EXPORT_OK = qw(delete_package);
 
-$VERSION = 1.02;
+$VERSION = 1.03;
 
 my $genpkg = "Symbol::";
 my $genseq = 0;
@@ -129,8 +129,15 @@ sub delete_package ($) {
     my $stem_symtab = *{$stem}{HASH};
     return unless defined $stem_symtab and exists $stem_symtab->{$leaf};
 
-    my $leaf_glob   = $stem_symtab->{$leaf};
-    my $leaf_symtab = *{$leaf_glob}{HASH};
+
+    # free all the symbols in the package
+
+    my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH};
+    foreach my $name (keys %$leaf_symtab) {
+        undef *{$pkg . $name};
+    }
+
+    # delete the symbol table
 
     %$leaf_symtab = ();
     delete $stem_symtab->{$leaf};