$class_name = "Calvin::Hobbes"; # from some value above my $new_object = $class_name->new; #### if (grep $class_name eq $_, qw(Calvin::Hobbes Peter::Gabriel Dog::Day::Afternoon)) { # must validate the name, or security holes will run rampant eval "require $class_name"; die $@ if $@; $object = $class_name->new; } #### my %make_a = qw( Calvin::Hobbes new Peter::Gabriel play Dog::Day::Afternoon watch ); ... if (my $constructor = $make_a{$class_name}) { unless ($INC{$class_name}) { eval "require $class_name"; die $@ if $@; } $object = $class_name->$constructor(); }