package base; sub function { } package derived; our @ISA = qw|base|; package main; derived->function(); # <-- works, not what I want my $pack = "base"; &{"${pack}::functon"}(); # <-- works, not what I want $pack = "derived"; &{"${pack}::function"}(); # <-- doesn't work, this is what I want $pack = "derived"; eval "${pack}->function()"; # <-- works, not what I want