use strict;
use warnings;
package Foo;
sub new {
my $class = shift;
return bless( eval 'sub { print "Hello!\n" }', $class );
}
sub DESTROY {
print "DESTROYing $_[0]\n";
return;
}
package main;
my $object = Foo->new;
print "Created $object\n";
$object->();
undef $object;
print "Done.\n";
####
# Created Foo=CODE(0x82cafec)
# Hello!
# DESTROYing Foo=CODE(0x82cafec)
# Done.
##
##
sub new {
my $class = shift;
my $string = "Hello!\n";
return bless( sub { print $string }, $class );
}