There are 2 problems with your argument that jump out at me.
- first - DESTROY should still get called even if only once.
- second sub { $bob } does not get DESTROYed either and it certainly not immutable.
package Foo;
sub print { print "@_\n"; }
sub DESTROY {
print "@_ DESTROY\n";
}
our $bob = "x\n";
my $x = bless(sub {$bob}, 'Foo');
$x->print('$bob');
print $x->();
$bob = "y\n";
print $x->();
$bob = undef;
__END__
Foo=CODE(0xe8a278) $bob
x
y
-- gam3
A picture is worth a thousand words, but takes 200K.