in reply to Using a paramter value to call a module

'use' is evaluated at compile-time, not run time (as the documentation indicates, it's essentially the same as calling require and import from a BEGIN block), so by the time your logic is evaluated, the use has long since executed. You can delay that by putting it in an eval though...

use lib '/path/to/module/location'; if( param('yo') =~ /inyourface/) { eval "use UpYours;"; }

You could also copy the code that use runs when it imports the module, and do "require UpYours; import UpYours;" instead of the eval (check the perl documentation for 'use').