#!/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 ...