use warnings; use strict; use Data::Dumper; package testB1; sub PackageB1 { return __PACKAGE__ . "\n"; } sub AnotherB1 { return "Another\n"; } package test; use parent -norequire, qw(testB1); sub new { my ($class) = @_; return bless {}, $class; } sub Package { return __PACKAGE__ . "\n"; } package main; my $obj = test->new (); { no strict 'refs'; print "\nInstance METHOD IS " . Dumper( \%{ref ($obj)."::" }) ; } print $obj->PackageB1 (); { no strict 'refs'; print "\nInstance METHOD IS " . Dumper( \%{ref ($obj)."::" }) ; } #### Instance METHOD IS $VAR1 = { 'AUTOLOAD' => *test::AUTOLOAD, 'ISA' => *test::ISA, 'BEGIN' => *test::BEGIN, 'DESTROY' => *test::DESTROY, 'new' => *test::new, 'Package' => *test::Package }; testB1 Instance METHOD IS $VAR1 = { 'AUTOLOAD' => *test::AUTOLOAD, 'ISA' => *test::ISA, 'PackageB1' => *test::PackageB1, 'BEGIN' => *test::BEGIN, 'DESTROY' => *test::DESTROY, 'new' => *test::new, 'Package' => *test::Package };