my %objects; for my $class (@available_classes) { eval qq(require $class); if ($@) { # you can make it die() here, if you want warn "Failed to load class '$class': $@"; next; } $objects{$class} = $class->new; } #### use UNIVERSAL::require; my $class = get_implementor_class(); #defined somewhere $class->use or die $@; my $object = $class->new;