Функции для работы с числами

Создадим генератор паролей произвольной длины (листинг 2.28). Для этого в массив @mass добавляем все разрешенные символы, а далее в цикле получаем содержимое массива по случайному индексу. По умолчанию будет выдавать¬ся пароль из 8 символов.
sub f_passw_generator {
$count_char = shift();
$count char=8 if (!defined($count char));
@mass = (’a’ , ’b" , "c" ", "d" , ’e’ ,"f* r ’g’ , "h" , ’i’ ,"V Г 1 Vr 1
/ r
’n’,"o’, ’P"/ "q", "r", "s", *u’, ’V, "w\ "x1, "y\ , "z",
"А", "В", "C", "D\ "E\ "G", •H’, "i", "J", *K\ "L",
"M", ’N\ "O", "P", "Q", ’R\ •S’, ,T«, ’U", "V, »W1 f
"X", "Y\ "Z", "2 1, "3", "4\ ’51, "6\ "7", "S", "9\ . "0");
$passw =
for($i=0;$i<$count_char;$i++) {
$passw .= $mass[int(rand(scalar(0mass)))];

}
return $passw;
}
print f_passw_generator(10); # Выведет примерно GLalOpdkTr
Рассмотрим каждую строку программы. В первой строке мы определяем функцию f passw generator о с помощью ключевого слова sub. Далее полу¬чаем значение количества символов с помощью следующей строки:
$count_char = shift();
Все параметры, переданные функции, попадают в специальный массив С помощью функции shift о мы присваиваем первый элемент массива пере¬менной $count_char. Обратите внимание, в функции shift о не указан пара¬метр. По умолчанию этим параметром является массив @_. Иными словами, предыдущий фрагмент кода можно переписать так:
$count_char = shift(@_);
Далее мы проверяем, определена ли переменная $count_char с помощью функции defined(). Если переменная определена, функция возвращает true, мы инвертируем возвращаемое значение при помощи выражения:
!defined($ count_cha г)
Если переменная не определена, то ей присваивается значение 8. Таким обра¬зом, если мы не укажем параметр при вызове функции f passw generator (), то длина пароля по умолчанию будет равна восьми символам. В следующих строках мы заполняем массив @mass разрешенными символами. Далее при¬сваиваем переменной $passw пустую строку. Затем в цикле определяем слу¬чайный индекс массива и по нему получаем значение элемента массива. С помощью выражения scalar(@mass) мы получаем количество элементов массива. Так как функция rand о возвращает вещественное число, большее или равное 0 и меньшее числа, заданного параметром, мы с помощью функ¬ции int о возвращаем целую часть числа:
int(rand(scalar(@mass)))
Например, если число элементов массива равно 10, то мы получим случайное число от 0 до 9. Учитывая, что индексация массива начинается с 0, то округ¬ление числа элементов массива даст максимальный индекс массива. По этому индексу определяем значение элемента массива:
$mass[int(rand(scalar(@mass)))]
Полученный символ добавляем к значению переменной $passw при помощи операции конкатенации строк (.=). Далее с помощью ключевого слова return мы возвращаем полученный пароль в место вызова функции:
return $passw;
Для вызова функции указываем ее название, а в круглых скобках задаем количество символов в пароле. В итоге сгенерированный пароль выводим в окно Web-браузера с помощью оператора print:
print f_passw_generator(10);



Страница: 1 | 2


Web сайты на Perl и MySql