use Foo qw(Bar Baz);
####
use Foo ();
use Foo::Bar ();
use Foo::Baz ();
##
##
my @module = qw(Bar Baz); # allowable modules
my %module = map {$_ => 1} @module; # easy lookup of modules
sub import {
my $class = shift;
return if $class ne 'Foo'; # allow import to be inherited by submodules
my @require; # list of modules to be required
if (@_) {
foreach (@_) {
if ($_ eq ':all') {
@require = @module;
} elsif ($module{$_}) {
push @require,$_;
} else {
warn "Don't know how to load Foo::$_\n";
}
}
} else {
@require = @module;
}
foreach (@require) {
next if eval "require Foo::$_;"; # string eval for easiness
warn "Foo::$_: $@"; # could be die also if you prefer
}
} #import