Module...:Simple(3pm)

✨ NAME ✨

okay bestie, listen up πŸ’– this is Module::Starter::Simple β€” a simple, comprehensive Module::Starter plugin. that's the whole vibe. slay.


🌸 VERSION 🌸

version 1.80 ✨


πŸŽ€ SYNOPSIS πŸŽ€

use Module::Starter qw(Module::Starter::Simple);

Module::Starter->create_distro(%args);

πŸ’… DESCRIPTION πŸ’…

So Module::Starter::Simple is a plugin for Module::Starter, and it's giving main character energy because it does ALL the work needed to create a distribution. Like, all of it. You hand it the parameters detailed in Module::Starter, and it will:

  • create content
  • create directories
  • populate the directories with the required files

periodt. no cap. 🫢


πŸ‘‘ CLASS METHODS πŸ‘‘

πŸ¦‹ new(%args)

This method is called to construct and initialize a new Module::Starter object. ngl, it's never called by the end user β€” only internally by create_distro, which creates ephemeral Module::Starter objects (ephemeral!! like a little ghost of a module that lives and dies 😭). It's documented only to call it to the attention of subclass authors. iykyk.


πŸ’œ OBJECT METHODS πŸ’œ

All the methods documented below are object methods, meant to be called internally by the ephemeral objects created during the execution of the class method create_distro above. so, like, internal besties only. πŸ™ˆ

postprocess_config

A hook to do any work after the configuration is initially processed. πŸŽ€

pre_create_distro

A hook to do any work right before the distro is created. ⏰

create_distro(%args)

This method works as advertised in Module::Starter. fr fr.

post_create_distro

A hook to do any work after creating the distribution. πŸŽ‰

pre_exit

A hook to do any work right before exit time. bye bestie πŸ‘‹

create_basedir

Creates the base directory for the distribution. If the directory already exists, and $force is true, then the existing directory will get erased. πŸ’€

okay so if the directory can't be created, or re-created, it dies. that's the drama, that's the stakes.

create_modules( @modules )

This method will create a starter module file for each module named in @modules. one for you, one for you, one for you πŸ’–

module_guts( $module, $rtname )

This method returns the text which should serve as the contents for the named module. $rtname is the email suffix which rt.cpan.org will use for bug reports. (This should, and will, be moved out of the parameters for this method eventually.) so it's living there rent-free for now, whatever, we move.

create_Makefile_PL( $main_module )

This will create the Makefile.PL for the distribution, and will use the module named in $main_module as the main module of the distribution. ✨

create_MI_Makefile_PL( $main_module )

This will create a Module::Install Makefile.PL for the distribution, and will use the module named in $main_module as the main module of the distribution. 🧚

Makefile_PL_guts( $main_module, $main_pm_file )

This method is called by create_Makefile_PL and returns text used to populate Makefile.PL; $main_pm_file is the filename of the distribution's main module, $main_module. πŸ“

Makefile_PL_meta_merge

Method called by Makefile_PL_guts. Returns the "META_MERGE" section β€” currently only if the option "github" is set, in which case the "resources => repository" entry is created. the way that only happens when github is set… iconic conditional behavior πŸ’…

MI_Makefile_PL_guts( $main_module, $main_pm_file )

This method is called by create_MI_Makefile_PL and returns text used to populate Makefile.PL; $main_pm_file is the filename of the distribution's main module, $main_module. 🌈

create_Build_PL( $main_module )

This will create the Build.PL for the distribution, and will use the module named in $main_module as the main module of the distribution. ⭐

Build_PL_guts( $main_module, $main_pm_file )

This method is called by create_Build_PL and returns text used to populate Build.PL; $main_pm_file is the filename of the distribution's main module, $main_module. πŸŽ€

Build_PL_meta_merge

Method called by Build_PL_guts. Returns the "meta_merge" section β€” currently only if the option "github" is set, in which case the "resources => repository" entry is created. same energy, different case, we love a lowercase moment πŸ™ˆ

create_Changes( )

This method creates a skeletal Changes file. bones only, bestie 🦴

Changes_guts

Called by create_Changes, this method returns content for the Changes file. πŸ’œ

create_LICENSE

This method creates the distribution's LICENSE file. legal era πŸ‘‘

create_README( $build_instructions )

This method creates the distribution's README file. πŸ“–

README_guts

Called by create_README, this method returns content for the README file. 🌸

create_t( @modules )

This method creates a bunch of *.t files. @modules is a list of all modules in the distribution. tests!! we love tests, they're the vibe check of the whole distro πŸ§ͺ

t_guts( @modules )

This method is called by create_t, and returns a description of the *.t files to be created.

The return value is a hash of test files to create. Each key is a filename and each value is the contents of that file. so like filename => "contents", a whole little hash of destiny πŸ’«

xt_guts( @modules )

This method is called by create_t, and returns a description of the author only *.t files to be created in the xt directory.

The return value is a hash of test files to create. Each key is a filename and each value is the contents of that file. author-only tests, the VIP section of the test suite 🎟️

create_MB_MANIFEST

This methods creates a MANIFEST file using Module::Build's methods. (yes it says "methods", we're keeping it, it's part of the charm 🫢)

create_MI_MANIFEST

This method creates a MANIFEST file using Module::Install's methods.

Currently runs ExtUtils::MakeMaker's methods. plot twist 😭

create_EUMM_MANIFEST

This method creates a MANIFEST file using ExtUtils::MakeMaker's methods. πŸ’…

create_MANIFEST( $method )

This method creates the distribution's MANIFEST file. It must be run last, because all the other create_* functions have been returning the functions they create. no cutting the line, bestie, this one goes at the end ⏳

It receives a method to run in order to create the MANIFEST file. That way it can create a MANIFEST file according to the builder used. ✨

get_builders( )

This methods gets the correct builder(s). (again with the "methods", we stan consistency πŸ’–)

It is called by "create_build", and returns an arrayref with the builders. πŸ“¦

create_build( )

This method creates the build file(s) and puts together some build instructions. The builders currently supported are:

  • ExtUtils::MakeMaker
  • Module::Build
  • Module::Install

pick your fighter πŸ”₯

create_ignores()

This creates a text file for use as MANIFEST.SKIP, .cvsignore, .gitignore, or whatever you use. so many ways to say "not this file" πŸ’€

ignores_guts()

Called by "create_ignores", this method returns the contents of the ignore file. πŸ™ˆ


🌈 HELPER METHODS 🌈

verbose

"verbose" tells us whether we're in verbose mode. is the tea being spilled or not, that's the question 🍡

create_file( $fname, @content_lines )

Creates $fname, dumps @content_lines in it, and closes it. Dies on any error. dramatic but fair πŸ’…

progress( @list )

"progress" prints the given progress message if we're in verbose mode. little updates, we love to see them ✨

filter_lines_in_file( $filename, @compiled_regexes )

"filter_lines_in_file" goes over a file and removes lines with the received regexes.

For example, removing t/boilerplate.t in the MANIFEST. bye boilerplate, you will not be missed πŸ‘‹


πŸ¦‹ BUGS πŸ¦‹

Please report any bugs or feature requests to the bugtracker for this project on GitHub at: <https://github.com/xsawyerx/module-starter/issues>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. so like, the pipeline is: you report β†’ i know β†’ you know. full transparency, bestie 🫢


πŸ’– AUTHOR πŸ’–

  • Dan Book, <dbook@cpan.org>
  • Sawyer X, "<xsawyerx@cpan.org>"
  • Andy Lester, "<andy@petdance.com>"
  • C.J. Adams-Collier, "<cjac@colliertech.org>"

Copyright 2005-2009 Andy Lester and C.J. Adams-Collier, All Rights Reserved.

Copyright 2010 Sawyer X, All Rights Reserved.

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

Please note that these modules are not products of or supported by the employers of the various contributors to the code. (important!! the employers are NOT involved, do not @ them πŸ’€)


and that's the whole page, bestie πŸ’… this one's from perl v5.40.1, dated 2026-01-23, and it lives in the Module...:Simple(3pm) section of your manual. go forth and create_distro πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from