in reply to Exported subroutine redefine
You could crawl all over the symbol table finding any references to the old Foo::foo and update them. You're already doing something horribly icky, what's a bit more eh?
Edit: Hah, I meant module::function, sorry. Foo::foo was the name of the function I was using to test things.