Perlでコマンドのpodをモジュールファイルに書く方法
コマンドのヘルプはPod::Usage::pod2usage()で処理したいのでついコマンド本体のファイルにpodを書きがちですが、そうすると空のモジュールファイルのドキュメントが完全に空になってどこをみたらいいのかわからなくなりがちです。
そういうときは、Pod::Find::pod_where()でpod2usage()の向き先をかえてやるといいようです。
たとえば以下のコマンドでは、コマンドの実体($0)はbin/test-travisですが、ドキュメントはApp::test::travisに書いてそちらを参照しています。
https://github.com/gfx/App-test-travis/blob/master/lib/App/test/travis.pm
GetOptions(
'--dry-run' => \$DRY_RUN,
'--help' => \$HELP,
) or help(1);
help(0) if $HELP;
# ...
sub help {
my($exit_status) = @_;
my $pod_file = pod_where({ -inc => 1 }, 'App::test::travis') or die;
pod2usage(
-exitval => $exit_status,
-input => $pod_file,
);
}