use myPackage; myPackage::foo(); myPackage::bar(); #### package myPackage; use strict; use myNewPackage; # magically convert myNewPackage::* to myPackage()::* # except for one function where myNewPackage::bar() needs to actually provide myPackage::old_bas() #### sub myPackage::a { return myNewPackage::a(@_); } sub myPackage::b { return myNewPackage::b(@_); } sub myPackage::old_bas { return myNewPackage::bar(@_); }