{ package Animal;
sub speak {
my $class = shift;
print "a $class goes ", $class->sound, "!\n"
}
sub name {
my $self = shift;
$$self;
}
sub named {
my $class = shift;
my $name = shift;
bless \$name, $class;
}
}
{ package Horse;
@ISA = qw(Animal);
sub sound { "neigh" }
}
Ahh, but what happens if you invoke speak on an
instance?
my $tv_horse = Horse->named("Mr. Ed");
$tv_horse->speak;
You get a debugging value:
a Horse=SCALAR(0xaca42ac) goes neigh!