from perldoc -f use:
use Module VERSION LIST
use Module VERSION
use Module LIST
use Module
use VERSION
Imports some semantics into the current package from the n
+amed
module, generally by aliasing certain subroutine or variab
+le
names into your package. It is exactly equivalent to
BEGIN { require Module; import Module LIST; }
except that Module *must* be a bareword.
and from perldoc -f require:
If EXPR is a bareword, the require assumes a ".pm" extensi
+on and
replaces "::" with "/" in the filename for you, to make it
+ easy
to load standard modules. This form of loading of modules
+does
not risk altering your namespace.
In other words, if you try this:
require Foo::Bar; # a splendid bareword
The require function will actually look for the "Foo/Bar.p
+m"
file in the directories specified in the @INC array.
But if you try this:
$class = 'Foo::Bar';
require $class; # $class is not a bareword
#or
require "Foo::Bar"; # not a bareword because of t
+he ""
The require function will look for the "Foo::Bar" file in
+the
@INC array and will complain about not finding "Foo::Bar"
+there.
In this case you can do:
eval "require $class";
so BEGIN{ my $var= 'CGI'; eval "require $var"; $var->import(); } should work.
~Particle *accelerates*