---
name: "Module::Starter::Simple"
section: "3pm"
platform: "linux"
package: "libmodule-starter-perl"
version: "1.770+dfsg-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Module::Starter::Simple"
---

# Module::Starter::Simple(3pm)

a simple, comprehensive Module::Starter plugin

## NAME

Module::Starter::Simple - a simple, comprehensive Module::Starter plugin

## VERSION

version 1.77

## SYNOPSIS

```
    use Module::Starter qw(Module::Starter::Simple);
    Module::Starter->create_distro(%args);
```

## DESCRIPTION

Module::Starter::Simple is a plugin for Module::Starter that will perform all the work needed to create a distribution.  Given the parameters detailed in Module::Starter, it will create content, create directories, and populate the directories with the required files.

## CLASS METHODS

### "new(%args)"

This method is called to construct and initialize a new Module::Starter object. It is never called by the end user, only internally by `"create_distro"`, which creates ephemeral Module::Starter objects.  It's documented only to call it to the attention of subclass authors.

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

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

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

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

If the directory can't be created, or re-created, it dies.

### create\_modules( @modules )

This method will create a starter module file for each module named in *@modules*.

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

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

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

### create\_Changes( )

This method creates a skeletal Changes file.

### Changes\_guts

Called by create\_Changes, this method returns content for the Changes file.

### create\_LICENSE

This method creates the distribution's LICENSE file.

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

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

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

### create\_MB\_MANIFEST

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

### create\_MI\_MANIFEST

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

Currently runs ExtUtils::MakeMaker's methods.

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

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

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

### create\_ignores()

This creates a text file for use as MANIFEST.SKIP, .cvsignore, .gitignore, or whatever you use.

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

### create\_file( $fname, @content\_lines )

Creates *$fname*, dumps *@content\_lines* in it, and closes it. Dies on any error.

### progress( @list )

`"progress"` prints the given progress message if we're in verbose mode.

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

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

## AUTHOR

Dan Book, \<dbook@cpan.org\>

Sawyer X, `"<xsawyerx@cpan.org>"`

Andy Lester, `"<andy@petdance.com>"`

C.J. Adams-Collier, `"<cjac@colliertech.org>"`

## Copyright & License

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.
