in reply to Simulating the absence of a module

Perhaps the reason this $INC{'CGI.pm'} = undef; does not work is that it is overridden by @INC (the list of paths to search for the modules).

If you want to disable a module, the simple way is to write a dummy for it - perhaps others know a way to (shudder) hack the symbol table instead. To change preferences you could re-order the @INC array in the BEGIN block.

One world, one people