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