hi Struppi,
use Time::HiRes qw/gettimeofday/;
habch leider nicht auf der Büchse... aber ich denke mal, dass time.$$ auf LINUXn so ziemlich eindeutig sein sollte. Meine Lösung ganz wird somit ein bischen vereinfacht:
use strict;
my @sessions;
my $tests = 10000;
for(1..$tests){
my @salts;
my $salt;
# salts erzeugen
for("a".."z"){ push @salts, $_ }
shuffle(@salts);
$salt = join "", @salts;
# und nun crypten
my $zufall = crypt($salt,time.$$);
# zufallsworte einlesen
push @sessions, $zufall;
}
teste
my %keys = map{ $_,1}@sessions;
print scalar keys %keys, "\n$tests\n";
print "$sessions[0]\n";
subfunktion menge mischen (siehe PERL Doku: fisher_yates_shuffle)
sub shuffle{
my $array = shift;
my $i;
for ($i = @$array; --$i;){
my $j = int rand ($i+1);
next if $i == $j;
@$array[$i,$j] = @$array[$j,$i];
}
}
... und der Abend ist gerettet ;-)
Viele Grüße, Rolf