---
name: "String::MkPasswd"
section: "3pm"
platform: "linux"
package: "libstring-mkpasswd-perl"
version: "0.05-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/String::MkPasswd"
---

# String::MkPasswd(3pm)

random password generator

## NAME

String::MkPasswd - random password generator

## SYNOPSIS

```
  use String::MkPasswd qw(mkpasswd);
  print mkpasswd();
  # for the masochisticly paranoid...
  print mkpasswd(
      -length     => 27,
      -minnum     => 5,
      -minlower   => 1,   # minlower is increased if necessary
      -minupper   => 5,
      -minspecial => 5,
      -distribute => 1,
  );
```

## ABSTRACT

This Perl library defines a single function, `"mkpasswd()"`, to generate random passwords.  The function is meant to be a simple way for developers and system administrators to easily generate a relatively secure password.

## DESCRIPTION

The exportable `"mkpasswd()"` function returns a single scalar: a random password.  By default, this password is nine characters long with a random distribution of four lower-case characters, two upper-case characters, two digits, and one non-alphanumeric character.  These parameters can be tuned by the user, as described in the "ARGUMENTS" section.

### ARGUMENTS

The `"mkpasswd()"` function takes an optional hash of arguments.

- \-length

  The total length of the password.  The default is 9.

- \-minnum

  The minimum number of digits that will appear in the final password. The default is 2.

- \-minlower

  The minimum number of lower-case characters that will appear in the final password.  The default is 2.

- \-minupper

  The minimum number of upper-case characters that will appear in the final password.  The default is 2.

- \-minspecial

  The minimum number of non-alphanumeric characters that will appear in the final password.  The default is 1.

- \-distribute

  If set to a true value, password characters will be distributed between the left- and right-hand sides of the keyboard.  This makes it more difficult for an onlooker to see the password as it is typed.  The default is false.

- \-noambiguous

  If set to a true value, password characters will not include any that might be mistaken for others. This is particularly helpful if you're distributing a printed list of passwords to a group of people. The default is false.

- \-fatal

  If set to a true value, `"mkpasswd()"` will **Carp::croak()** rather than return `"undef"` on error.  The default is false.

If **-minnum**, **-minlower**, **-minupper**, and **-minspecial** do not add up to **-length**, **-minlower** will be increased to compensate. However, if **-minnum**, **-minlower**, **-minupper**, and **-minspecial** add up to more than **-length**, then `"mkpasswd()"` will return `"undef"`. See the section entitled "EXCEPTION HANDLING" for how to change this behavior.

### EXCEPTION HANDLING

By default, `"mkpasswd()"` will return `"undef"` if it cannot generate a password.  Some people are inclined to exception handling, so **String::MkPasswd** does its best to accommodate them.  If the variable `$String::MkPasswd::FATAL` is set to a true value, `"mkpasswd()"` will **Carp::croak()** with an error instead of returning `"undef"`.

### EXPORT

None by default.  The `"mkpasswd()"` method is exportable.

## SEE ALSO

\<http://expect.nist.gov/#examples\>, [**mkpasswd**(1)](/mkpasswd/1.md)

## AKNOWLEDGEMENTS

Don Libes of the National Institute of Standards and Technology, who wrote the Expect example, [**mkpasswd**(1)](/mkpasswd/1.md).

## AUTHOR

Chris Grau \<cgrau@cpan.org\>

## COPYRIGHT AND LICENSE

Copyright (C) 2003-2012 by Chris Grau

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.1 or, at your option, any later version of Perl 5 you may have available.
