Просмотр полной версии : генерация случайной строки на perl
вообщем пишу одинскрипт надо случайно ненерить строку текста -типо пароль рамдомный можно статистической длины но вида Wq1Ys` ну вы поняли из мусора всякого -- чето ничего кроме как взять массив символов и из него рамдомно выдирать символы и слепливать их в голову не приходит
посоветуйте наверняка есть чтонить покрасивее
Digimortal
18.04.2007, 23:44
так пойдет?
print rand_pass(16);
sub rand_pass
{
my $len = shift;
my $pass;
for (1..$len) {$pass .= chr(rand(94)+33)}
return $pass;
}
<?php
function randomkeys($length)
{
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
$key = $pattern{rand(0,35)};
for($i=1;$i<$length;$i++)
{
$key .= $pattern{rand(0,35)};
}
return $key;
}
?>
blackybr
19.04.2007, 09:50
ф-ии
sub generatePassword {
$length = shift;
$possible = 'abcdefghijkmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRS TUVWXYZ';
while (length($pass) < $length) {
$pass .= substr($possible, (int(rand(length($possible)))), 1);
}
return $pass
}
или
sub randomPassword {
my $pass;
my $_rand;
my $password_length = $_[0];
if (!$password_length) {
$password_length = 10;
}
my @chars = split(" ",
"a b c d e f g h i j k l m n o
p q r s t u v w x y z - _ % # |
0 1 2 3 4 5 6 7 8 9");
srand;
for (my $i=0; $i <= $password_length ;$i++) {
$_rand = int(rand 41);
$pass .= $chars[$_rand];
}
return $pass;
}
Digimortal
19.04.2007, 16:20
омг...
он же попросил красивое решение, а вы оба пишете то же самое, что он сам и придумал.. )
я сейчас прямо перед чтением ответов допер что через chr можно заделать -- а тут диджи даже и код готовый кинул спасиб =)
use Digest::MD5;my@chars=(97..122);$str.=chr$chars[int rand scalar@chars]for(1..16);$str=Digest::MD5::md5_hex($str)
@chars = ( "A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) );
$password = join("", @chars[ map { rand @chars } ( 1 .. 8 ) ]);
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot