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 ...