Module::Setup - a simple module maker "yet another Module::Start(?:er)?"


simply use

  $ module-setup Foo::Bar

make flavor

  $ module-setup --init catalyst-action # create a "catalyst actions" flavor

edit for flavor

  $ cd ~/.module-setup/flavor/catalyst-action/template && some files edit for catalyst action templates

use flavor

  $ module-setup Foo catalyst-action # create to Catalyst::Action::Foo module

redistribute pack for flavor

  $ module-setup --pack MyFlavorCatalystAction catalyst-action >

using redistributed flavor

  $ module-setup --direct --flavor-class=+MyFlavorCatalystAction New::Class

importing redistributed flavor

  $ module-setup --init --flavor-class=+MyFlavorCatalystAction new_flavor

install additional template

  $ module-setup --flavor-class=+MyFlavorCatalystDBIC --additional=DBIC catalyst

redistribute pack for additional template

  $ module-setup --pack --additional=DBIC MyFlavorCatalystDBIC catalyst >

redistribute pack without additional template

  $ module-setup --pack --without-additional MyFlavorCatalyst catalyst >

for git

  $ module-setup --plugin=VC::Git Foo::Bar # or edit your ~/.module-setup/flavor/foo/config.yaml


Module::Setup is very simply module start kit.

When the module-setup command is executed first, a necessary template for ~/.module-setup directory is copied.

What's difference Module::Setup and Module::Starter?

Module::Starter is very useful module. However customize of module template is complex.

If Module::Starter::PBP is used, do you solve it?

Yes, but switch of two or more templates is complex.

If Module::Setup is used, switch of template flavor is easy.

flavor customized uniquely becomes the form which can be redistributed by "module-setup --pack".

if incorporating Module::Setup in your application, you can make Helper which is well alike of Catalyst::Helper.

Example For Incorporating

  use Module::Setup;

  local $ENV{MODULE_SETUP_DIR} = '/tmp/module-setup'; # dont use  ~/.module-setup directory
  my $options = {
      # see setup_options method
  my $pmsetup = Module::Setup->new(
      options => $options,
      argv    => [qw/ New::Module foo_flavor /],
  $pmsetup->run; # create New::Module module with foo_flavor flavor


Module::Setup considers as possible that it can use as Helper-toolkit for other applications. but Module::Setup has many dependence modules. I hear "Module::Setup is very not usefl for my application helper tool, because many dependence." well.

The Core function of Module::Setup is split to another distribution in conclusion. The name considered now is Module::Setup::Core. It leaves Flavors, Plugins and module-setup script to Module::Setup.

Really required dependence for Core is lessened by this thing.

It develops in and Module::Setup's core-branch.


Kazuhiro Osawa <yappo <at> shibuya <döt> pl>








Module::Setup::Plugin, module-setup

this module's base code is pmsetup written by Tatsuhiko Miyagawa.

some pmsetup scripts are in a


  git clone git://
Module::Setup is git repository is hosted at L<>.
patches and collaborators are welcome.


This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 670:

Non-ASCII character seen before =encoding in '<döt>'. Assuming UTF-8