@kyanny's blog

My life. Opinions are my own.

MooseX::Getopt は --help オプションを自動認識する

POD によると、

If Getopt::Long::Descriptive is installed and any of the following command line params are passed, the program will exit with usage information. You can add descriptions for each option by including a documentation option for each attribute to document.

  --?
  --help
  --usage

If you have Getopt::Long::Descriptive the usage param is also passed to new.

と書いてあり、 Getopt::Long::Descriptive がインストールされていて '?', 'help', 'usage' というアトリビュートを定義しているときに、 --?, --help, --usage というコマンドラインオプションを渡すと、 Getopt::Long::Descriptive によって自動的に usage が表示される。 pod2usage(2) if $app->help; というイディオムを使わなくて済む。 Getopt::Long::Descriptive は requires に入ってるので常にそういう挙動になる。なので、自前で 'help' とかを定義してなんか違う使い方をしようとするとハマる(乗っ取られる)ので注意。