my $foo = Foo->new qw(
Foo::Bar
Foo::Baz
);
####
my @submodules = @_;
for ( @submodules ) {
eval "require $_" || die "$!";
}
####
my $foo = Foo->new qw(
Bar
Baz
);
####
for ( @submodules ) {
eval "require Foo::$_" || die "$!";
}
####
package Foo;
sub new {
my $class = shift;
my @submodules = @_;
for ( @submodules ) {
eval "require $_" || die "$@";
}
bless { submodules => \@submodules }, $class;
}
1;
####
package Foo::Bar;
sub details {
return {
name => 'Simon',
job => 'doctor',
};
}
1;
####
#!/usr/bin/perl
use Foo;
my $foo = Foo->new qw(Foo::Bar Foo::Baz );
for ( @{ $foo->{'submodules'} } ) {
print $_->details->{'name'}
. " is a "
. $_->details->{'job'}
. $/;
}
# prints: Simon is a doctor
####
package Foo;
sub new {
my $class = shift;
my @submodules = @_;
for ( @submodules ) {
eval "require Foo::$_" || die "$@";
}
bless { submodules => \@submodules }, $class;
}
1;
####
package Foo::Bar;
sub details {
return {
name => 'Simon',
job => 'doctor',
};
}
1;
####
#!/usr/bin/perl
use Foo;
my $foo = Foo->new qw( Bar );
for ( @{ $foo->{'submodules'} } ) {
print $_->details->{'name'}
. " is a "
. $_->details->{'job'}
. $/;
}
# prints: Can't locate object method "details" via package "Bar"
# (perhaps you forgot to load "Bar"?)