I needed to do something similar myself about a month ago, too... The result was LocalOverride, which hooks into the require mechanism (by putting a coderef into @INC, as cdarke suggested above) to accomplish what you've described transparently. With the default configuration, LocalOverride would cause
use Some::Module;
to more-or-less turn into
use Some::Module;
use Local::Some::Module;
("More-or-less" because Some::Module::import runs only after both versions are loaded, not once after the base module loads and again after the local modifications load.)
Also note that, with this technique, you don't need to use a complete copy of the base module as a baseline. So long as you load both Some::Module and then Replacement::Some::Module, you only need to include changed subs in Replacement::Some::Module. | [reply] [d/l] [select] |