Result is :#!/usr/bin/perl use strict; use warnings; use NEXT; { package A; sub method { print "$_[0]: A method\n"; $_[0]->NEXT::method() +}; sub DESTROY { print "$_[0]: A dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package B; use base qw( A ); sub AUTOLOAD { print "$_[0]: B AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: B dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package C; sub method { print "$_[0]: C method\n"; $_[0]->NEXT::method() +}; sub AUTOLOAD { print "$_[0]: C AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: C dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package D; use base qw( B C ); sub method { print "$_[0]: D method\n"; $_[0]->NEXT::method() +}; sub AUTOLOAD { print "$_[0]: D AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: D dtor\n"; $_[0]->NEXT::DESTROY() +}; } package main; my $obj = bless {}, "B"; $obj->method();
Result is:#!/usr/bin/perl use strict; use warnings; use NEXT; { package A; sub method { print "$_[0]: A method\n"; $_[0]->NEXT::method() +}; sub DESTROY { print "$_[0]: A dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package C; sub method { print "$_[0]: C method\n"; $_[0]->NEXT::method() +}; sub AUTOLOAD { print "$_[0]: C AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: C dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package D; use base qw( B C ); sub method { print "$_[0]: D method\n"; $_[0]->NEXT::method() +}; sub AUTOLOAD { print "$_[0]: D AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: D dtor\n"; $_[0]->NEXT::DESTROY() +}; } { package B; use base qw( A ); sub AUTOLOAD { print "$_[0]: B AUTOLOAD\n"; $_[0]->NEXT::AUTOL +OAD() }; sub DESTROY { print "$_[0]: B dtor\n"; $_[0]->NEXT::DESTROY() +}; } package main; my $obj = bless {}, "B"; $obj->method();
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |