#! perl -slw use strict; use List::Util qw[ shuffle ]; our( $L, $N, $S, $h, $p ); our $l //= 14; if( $h ) { print "$0 [-L -N -S -p -l=nn -h]\n", ; exit; } $l = $l <= 0 ? 14 : $l > 100 ? 100 : $l; my @chars; push @chars, 'a'..'z', 'A'..'Z' unless $L; push @chars, 0 .. 9 unless $N; push @chars, split'', q[`~!@#$%^&*()_+-=\,./<>?;':"[]{}] #' unless $S; printf "%s%s\n", $p ? '' : 'Password: ', join'', (shuffle @chars)[ 0 .. $l-1 ]; __DATA__ -h this help -p supress "Password:" -l=nn length to generate: 1 .. 100; default:14 -L supress letters (upper and lower) -N supress digits -S supress symbols `~!@#$%^&*()_+-=\,./<>?;':"[]{}