in reply to Difference between 'use' and 'require'
Don't forget the arcane 'unimport' routine that is called when you use 'no' instead of 'use'.
It's good for making subroutines and constants have no-op or undefined values, so that code which calls the module doesn't have to worry about breaking in strict mode.
This only works for modules that have an unimport subroutine defined, though.
Carp::Asset is a good example:
no Carp::Assert; # change to use to enable assert( 0 ), if DEBUG;