- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
sub create_sid {
my $uid = shift @_;
return undef if (!defined $uid);
my $sid;
my $rand = 1;
my $is_ok = 0;
my(@itoa) = ('0' .. '9','a' .. 'z','A' .. 'Z');
my $itoa_len = $#itoa;
while ($is_ok != 1){
$sid = '';
for(0..8) { #создание нового сида
$rand = rand(25*240*17 + $rand + $uid);
$sid .= $itoa[$rand & $itoa_len];
}
my $exists = $RR::Init::memd->get('sid'.$sid); #проверка что такого не существует
$is_ok = 1 if (!defined $exists);
}
return $sid;
}
santa_microbe 23.03.2012 16:39 # +1
santa_microbe 23.03.2012 16:57 # +1
Помню на одном проекте использовали ActivePerl 5.12, там rand на рабочей машине стал выдавать одинаковые последовательности от запуска к запуску . Тогда мы использовали модуль Math::Random::MT и все нормализовалось.
PSIAlt 23.03.2012 17:16 # 0
santa_microbe 23.03.2012 17:29 # 0
guest8 09.04.2019 12:53 # −999