package Foo; sub new { my $class = shift; my @submodules = @_; for ( @submodules ) { eval "require Foo::$_" || die "$@"; } bless { submodules => \@submodules }, $class; } 1;