{
package Foo;
sub new {
bless {}, shift;
}
sub run {
my $self = shift;
print "in " . __PACKAGE__ . "\n";
print "now going down\n";
print "in " . __PACKAGE__ . "\n";
}
}
{
package Foo::Bar;
use base qw(Foo);
sub run {
my $self = shift;
print "in " . __PACKAGE__ . "\n";
$self->SUPER::run();
print "in " . __PACKAGE__ . "\n";
}
}
{
package Foo::Bar::Baz;
use base qw(Foo::Bar);
sub run {
my $self = shift;
print "in " . __PACKAGE__ . "\n";
$self->SUPER::run();
print "in " . __PACKAGE__ . "\n";
}
}
{
package Foo::Bar::Baz::Mod;
use base qw(Foo::Bar::Baz);
sub run {
my $self = shift;
print "in " . __PACKAGE__ . "\n";
$self->SUPER::run();
print "in " . __PACKAGE__ . "\n";
}
}
my $obj = Foo::Bar::Baz::Mod->new();
$obj->run;
ca marche et ca donne :
in Foo::Bar::Baz::Mod
in Foo::Bar::Baz
in Foo::Bar
in Foo
now going down
in Foo
in Foo::Bar
in Foo::Bar::Baz
in Foo::Bar::Baz::Mod