in reply to Running CPAN without Being root

CPAN.pm accepts a conf variable, LIB, which controls the installation path. Look in the CPAN FAQ under "I am not root, how can I install a module in a personal directory?"

More generally, take a look at ExtUtils::AutoInstall; it handles interactive querying and installation of required and/or optional modules, and you may be able to simply use it rather than writing your own interactive Makefile.PL and worrying about cross-platform testing.