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

VERSION
    version 2.03

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 script 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

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

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

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

        Default: on.

        This conflicts with special characters so be sure to disable it if
        you want special characters to be used.

    special
        Include special characters: "!", "@", "#", "$", "%", "^", "&", "*",
        "(", ")"

        Default: off.

        This conflicts with readable characters so be sure to disable them
        if you want special characters to be used.

    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
    length
        How long will the passwords be.

        Default: 10.

   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 because there is no
    MouseX::SimpleConfig.

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

DEPENDENCIES
    Mouse

    MouseX::Getopt

    MouseX::ConfigFromFile

    Config::Any

    Path::Class

    List::AllUtils

    File::HomeDir

    namespace::autoclean

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 <xsawyerx@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2010 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.

