Module::Recursive::Requireが便利そうな件

Catalyst::Model::DynamicAdaptorのソースを見てて、見つけた。

use Module::Recursive::Require;
use MyApp::Foo;
my @required_packages = Module::Recursive::Require->new()->require_by('MyApp::Foo');

上みたいに書くとMyApp::Foo以下のモジュールが全部useできるみたいですね。
上はcpanのDESCRIPTIONを貼っただけです。

# 沢山useしないといけないヨー
use MyApp::Foo::aaa;
use MyApp::Foo::bbb;
use MyApp::Foo::ccc;
use MyApp::Foo::ddd::eee;
use MyApp::Foo::ddd::fff;
# ↑みたいに書かなくても

# ↓これだけでおk
my @required_packages = Module::Recursive::Require->new()->require_by('MyApp::Foo');
use Data::Dumper;
print Dumper \@required_packages;

# Dump結果
$VAR1 = [
'MyApp::Foo::aaa',
'MyApp::Foo::bbb',
'MyApp::Foo::ccc',
'MyApp::Foo::ddd::eee',
'MyApp::Foo::ddd::fff',
];

# newしてみる
my $object;
for $module ( @_ ) {
$object->{$module} = $module->new();
}

# 使ってみる
my $name = 'bbb';
my $data = $object->{'MyApp::Foo::'.$name}->get(); # <-適当でs

ヲレヲレフレームワークに使えそう。