in reply to dynamic class names

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*