use ModuleA qw( function ); use ModuleB qw( operate=function ); function(); # calls ModuleA::function() operate(); # calls ModuleB::function() #### use ModuleB qw( function ); BEGIN { *operate= \&function; undef \&function } use ModuleA qw( function );