NAME
   App::Genpass - Quickly and easily create secure passwords

VERSION
   version 2.34

SYNOPSIS
       use App::Genpass;

       my $genpass = App::Genpass->new();
       print $genpass->generate, "\n";

       $genpass = App::Genpass->new( readable => 0, length => 20 );
       print "$_\n" for $genpass->generate(10);

DESCRIPTION
   If you've ever needed to create 10 (or even 10,000) passwords on the fly
   with varying preferences (lowercase, uppercase, no confusing characters,
   special characters, minimum length, etc.), you know it can become a
   pretty pesky task.

   This module makes it possible to create flexible and secure passwords,
   quickly and easily.

       use App::Genpass;
       my $genpass = App::Genpass->new();

       my $single_password    = $genpass->generate(1);  # returns scalar
       my @single_password    = $genpass->generate(1);  # returns array
       my @multiple_passwords = $genpass->generate(10); # returns array again
       my $multiple_passwords = $genpass->generate(10); # returns arrayref

   This distribution includes a program called genpass, which is a command
   line interface to this module. If you need a program that generates
   passwords, use genpass.

SUBROUTINES/METHODS
 new
   Creates a new instance. It gets a lot of options.

 new_with_options
   Creates a new instance while reading the command line parameters.

 parse_opts
   Parses the command line options.

 configfile
   An attribute defining the configuration file that will be used. If one
   is not provided, it tries to find one on its own. It checks for a
   ".genpass.yaml" in your home directory (using File::HomeDir), and then
   for "/etc/genpass.yaml".

   If one is available, that's what it uses. Otherwise nothing.

   You must use the "new_with_options" method described above for this.

  flags
   These are boolean flags which change the way App::Genpass works.

   number
       You can decide how many passwords to create. The default is 1.

       This can be overridden per *generate* so you can have a default of
       30 but in a specific case only generate 2, if that's what you want.

   readable
       Use only readable characters, excluding confusing characters: "o",
       "O", "0", "l", "1", "I", and special characters such as '#', '!',
       '%' and other symbols.

       You can overwrite what characters are considered unreadable under
       "character attributes" below.

       Default: on.

   verify
       Verify that every type of character wanted (lowercase, uppercase,
       numerical, specials, etc.) are present in the password. This makes
       it just a tad slower, but it guarantees the result. Best keep it on.

       To emphasize how "slower" it is: if you create 500 passwords of 500
       character length, using "verify" off, will make it faster by 0.1
       seconds.

       Default: on.

  attributes
   minlength
       The minimum length of password to generate.

       Default: 8.

   maxlength
       The maximum length of password to generate.

       Default: 10.

   length
       Use this if you want to explicitly specify the length of password to
       generate.

  character attributes
   These are the attributes that control the types of characters. One can
   change which lowercase characters will be used or whether they will be
   used at all, for example.

       # only a,b,c,d,e,g will be consdered lowercase and no uppercase at all
       my $gp = App::Genpass->new( lowercase => [ 'a' .. 'g' ], uppercase => [] );

   lowercase
       All lowercase characters, excluding those that are considered
       unreadable if the readable flag (described above) is turned on.

       Default: [ 'a' .. 'z' ] (not including excluded chars).

   uppercase
       All uppercase characters, excluding those that are considered
       unreadable if the readable flag (described above) is turned on.

       Default: [ 'A' .. 'Z' ] (not including excluded chars).

   numerical
       All numerical characters, excluding those that are considered
       unreadable if the readable flag (described above) is turned on.

       Default: [ '0' .. '9' ] (not including excluded chars).

   unreadable
       All characters which are considered (by me) unreadable. You can
       change this to what you consider unreadable characters. For example:

           my $gp = App::Genpass->new( unreadable => [ qw(jlvV) ] );

       After all the characters are set, unreadable characters will be
       removed from all sets.

       Thus, unreadable characters override all other sets. You can make
       unreadable characters not count by using the "<readable =" 0>>
       option, described by the *readable* flag above.

   specials
       All special characters.

       Default: [ '!', '@', '#', '$', '%', '^', '&', '*', '(', ')' ].

       (not including excluded chars)

 generate
   This method generates the password or passwords.

   It accepts an optional parameter indicating how many passwords to
   generate.

       $gp = App::Genpass->new();
       my @passwords = $gp->generate(300); # 300 passwords to go

   If you do not provide a parameter, it will use the default number of
   passwords to generate, defined by the attribute number explained above.

   This method tries to be tricky and DWIM (or rather, DWYM). That is, if
   you request it to generate only one password and use scalar context
   ("<my $p = $gp-"generate(1)>>), it will return a single password.

   However, if you try to generate multiple passwords and use scalar
   context ("<my $p = $gp-"generate(30)>>), it will return an array
   reference for the passwords.

   Generating passwords with list context ("<my @p = $gp-"generate(...)>>)
   will always return a list of the passwords, even if it's a single
   password.

 get_config_from_file
   Reads the configuration file using Config::Any.

   Shamelessly lifted from MooseX::SimpleConfig.

AUTHOR
   Sawyer X, "<xsawyerx at cpan.org>"

DEPENDENCIES
   Carp

   Moo

   MooX::Types::MooseLike

   Getopt::Long

   File::Spec

   Config::Any

   File::HomeDir

   List::AllUtils

BUGS AND LIMITATIONS
   Please report any bugs or feature requests to "bug-app-genpass at
   rt.cpan.org", or through the web interface at
   <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-Genpass>. I will be
   notified, and then you'll automatically be notified of progress on your
   bug as I make changes.

SUPPORT
   You can find documentation for this module with the perldoc command.

       perldoc App::Genpass

   You can also look for information at:

   *   Github: App::Genpass repository

       <http://github.com/xsawyerx/app-genpass>

   *   RT: CPAN's request tracker

       <http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-Genpass>

   *   AnnoCPAN: Annotated CPAN documentation

       <http://annocpan.org/dist/App-Genpass>

   *   CPAN Ratings

       <http://cpanratings.perl.org/d/App-Genpass>

   *   Search CPAN

       <http://search.cpan.org/dist/App-Genpass/>

AUTHOR
   Sawyer X <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2011 by Sawyer X.

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