#!/usr/bin/perl package Foo { $n = 10; show_foo( "After assignment" ); delete $Foo::{'n'}; show_foo( "After delete" ); sub show_foo { print "-" x 10, $_[0], "-" x 10, "\n"; print "\$n is $n\n"; foreach my $name ( keys %Foo:: ) { print "$name\n"; } } }#end of package Foo ##OUT ----------After assignment---------- $n is 10 show_foo n ----------After delete---------- $n is 10 show_foo #### $n = 123; delete $::{n}; eval '$n=456'; print $n; eval 'print $n'; #OUT 123456 #### $n = 123; sub get_n { $n } BEGIN { delete $::{n} } $n = 456; print get_n(); print $n; #OUT 123456 #### #!/usr/bin/perl use Symbol qw(delete_package); package Foo { $n = 10; show_foo( "After assignment" ); sub show_foo { print "-" x 10, $_[0], "-" x 10, "\n"; print "\$n is $n\n"; foreach my $name ( keys %Foo:: ) { print "$name\n"; } } }#end of package Foo delete_package('Foo'); # package Foo again package Foo{ show_foo( "After delete" ); } #OUT ----------After assignment---------- $n is 10 show_foo n Undefined subroutine & called at ...