App::mgen書いたよ

WAFの上で開発していると名前空間のネストが長くなりがちなので、自動でモジュールファイルを生成してくれるモジュールを作成しました。Catalystについてくるhelperみたいなもんです。
こういうのはvimスニペットでやっちゃう方も多いと思いますが、個人的にこちらの方が使い勝手がいいので別途作ってしまいました。

App::mgen - Generate the single module file - metacpan.org

使い方はこんな感じです

ただのモジュールファイルを作りたい

コマンド
$ mgen Module
結果
package Module;

use strict;
use warnings;


1;
__END__
=head1 NAME
...

名前空間を指定したい

コマンド
$ pwd
/home/user/lib
$ cd ./MyApp/Namespace
$ MGEN_ROOT=`pwd` mgen Module;
結果
package MyApp::Namespace::Module;

use strict;
use warnings;


1;
__END__
=head1 NAME
...

名前空間を指定したい2

コマンド
$ pwd
/home/user/lib
$ ls
$ mgen MyApp::Namespace::Module;
$ cd ./MyApp/Namespace
$ ls -a
. .. Module.pm
結果
package MyApp::Namespace::Module;

use strict;
use warnings;


1;
__END__
=head1 NAME
...

名前空間を指定したいけどディレクトリは掘って欲しくない

コマンド
$ pwd
/home/user/lib
$ ls
$ mgen --current MyApp::Namespace::Module;
$ ls -a
. .. Module.pm

Mooseを使いたい

コマンド
$ mgen --moose Module
結果
package Module;

use strict;
use warnings;

use Moose;

1;
__END__
=head1 NAME
...

さらにnamespace::autoclearnを挿入したい

コマンド
$ mgen --autoclearn Module
結果
package Module;

use strict;
use warnings;
use Moose;

use namespace::autoclearn;


1;
__END__
=head1 NAME
...

さらに__PACKAGE__->meta->make_immutableを挿入したい

コマンド
$ mgen --moose --immutable Module
結果
package Module;

use strict;
use warnings;
use Moose;

__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 NAME
...

簡易シグネチャを登録したい

コマンド
$ MGEN_USER="jiwasaki" mgen --moose --immutable Module
結果
package Module;

# 2011/10/18 jiwasaki

use strict;
use warnings;
use Moose;

__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 NAME
...

他にも色々オプションがありますが、PODで大体分かると思います。
というわけで、初めてCPANにモジュールをアップロードしてみました!