Код:
#!/usr/bin/perl
# By: Fryxar
# Min number of numbers
$MAXCARNUM = 2;
# Min number of upper case letters
$MAXCARMAY = 2;
# Min number of lower case letters
$MAXCARMIN = 2;
# Others (numbers + upper letters + lower letters)
$MAXCARALL = 2;
# Total length (sum off all)
$MAX = $MAXCARNUM+$MAXCARMAY+$MAXCARMIN+$MAXCARALL;
$numbers = "0123456789";
$lower = "qwertyuiopasdfghjklzxcvbnm";
$upper = "QWERTYUIOPLKJHGFDSAZXCVBNM";
$all = $numbers . $lower . $upper;
@password = (); $j = 0;
# Generate numbers
for( $i=0; $i < $MAXCARNUM; $i++ ) {
srand;
$rand = int(rand length $numbers);
$password[$j++] = substr( $numbers, $rand, 1 );
}
# Generate upper letters
for( $i=0; $i < $MAXCARMAY; $i++ ) {
srand;
$rand = int(rand length $upper);
$password[$j++] = substr( $upper, $rand, 1 );
}
# Generate lower letters
for( $i=0; $i < $MAXCARMIN; $i++ ) {
srand;
$rand = int(rand length $lower);
$password[$j++] = substr( $lower, $rand, 1 );
}
# Generate lower letters + upper leters + numbers
for( $i=0; $i < $MAXCARALL; $i++ ) {
srand;
$rand = int(rand length $all);
$password[$j++] = substr( $all, $rand, 1 );
}
# Mix the vector
for( $i=0; $i < $MAXCARNUM+$MAXCARMAY+$MAXCARMIN+$MAXCARALL; $i++ ) {
srand;
$rand = int(rand $MAX);
$swap = $password[$i];
$password[$i] = $password[$rand];
$password[$rand] = $swap;
}
# And finaly print it!
foreach $_ (@password) { print "$_"; }
print "\n";




