in reply to Selective use of Use

The easiest way is the string form of eval:

if ($^O eq 'WhizBang Unix') { eval "use Module::WhizBang;"; die $@ if $@; } else ...

As the documentation tells you, use is basically equivalent to

BEGIN { require Module::Name; Module::Name->import(); };

so you can avoid the string eval (which is safe in this instance) by using

BEGIN { my $module = "Module::Name"; my $module_file = $module; # Translate module name into file name $module_file =~ s!::!/!g; $module_file .= '.pm'; require $module_file; $module->import(); };