Hi
I have a Derived2 class which has Derived as its base and Derived has Base as its base. I want to call a subroutine of Base.pm by the object of Derived2.pm
Please let me know what is going wrong in my code below :
## package Base.pm ###
package Base;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
sub display {
my $self = shift;
print "This is Base display \n";
}
1;
## package Derived.pm ##
package Derived;
@ISA = qw (Base);
use Base;
sub new {
my $class = shift;
my $self = {};
print "this is Derived new \n";
bless $self, $class;
return $self;
}
sub display {
my $self = shift;
print "This is Derived display \n";
}
1
## package Derived2.pm ###
package Derived2;
use Derived;
@ISA = qw(Derived);
use mro;
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
return $self;
}
sub display {
my $self = shift;
print "This is Derived2 display \n";
}
1
## Script.pl
use strict;
use warnings;
use mro ;
use Derived2;
my $obj = Derived2->new();
$obj->display(); #working as expected
my $gp = $obj->mro::get_linear_isa->[1];
my $gpm = $gp->can('display');
print "gp $gp |@$gp \n";
print "gp $gp |gpm $gpm \n";
$gp->display(); #does not work