package Factory; use strict; use My::Baseclass; my %includedObjects = (); sub createNew { my $self = shift; my $objectName = shift; unless (exists($includedObjects{$objectName})) { eval "use My::Baseclass::$objectName"; # eval "require My::Baseclass::$objectName"; if ($@) { die $@; }; # else $includedObjects{$objectName} = 1; }; if ($objectName->can('new')) { return $objectName->new(@_); # Pass in any remaining args } else { die "'$objectName' does not contain a constructor."; }; };