Thank you everyone for helping me, I am surprised by the support our there for mod_perl.
Cosimo sent me a quick fix to add to the startup.pl file, I have tested and verified it. The code below works with no problems after adding: my $srv = Apache2::ServerUtil->server; $srv->push_handlers( PerlChildInitHandler => sub { srand(time ^ $$) } ); This fix not only corrected the rand() example I posted, but fixed my root issue that rand() represented in my test script. My actual script uses: my $id = new String::Random; my $num = $id->randregex('[A-Za-z0-9]{30}'); This code is in a sub in another library. For the sake of keeping it simple I removed the use of it for my example. Luckily, String::Random must have suffered from the same rand() problem : ) And I HIGHLY appreciate Michael Peters tip (UUID() function in mysql), I will most likely start using that in place of my own random keys to reduce my overhead and worries. The reason I am not using auto_increment is because the databases exist on a mysql cluster. The auto_increment counts would have to be maintained very carefully with multiple servers running the same database so I opted to not worry about it and generate completely unique keys. When a line is added in one database it is advertised to all others, the linking between lines in diff tables is easier this way too. Thanks a ton gentlemen, you have saved me a great deal of time. Anthony Esposito On Sat, May 15, 2010 at 1:03 PM, Anthony Esposito <tony.m.espos...@gmail.com > wrote: > In one of my programs I started to receive database errors for not having a > unique id. I generate unique ids for each of the mysql lines that I add to > the database. I realized that the perl variable $idNum was keeping the same > random string for multiple executions. > > I created a test program to demonstrate the principle of what is happening. > > I have shown that the $count variable will function properly, I understand > why and expect $idNum to work the same way. However, when $idNum = > rand(99999999999) is used it misbehaves and starts to show the same numbers > after enough refreshes. > > The code stores the random numbers in a file so I can detect them over > multiple sessions. Within the same session a random key has never been > generated twice. > > Please help, I have been working on this for 2 days and it is killing my > progress at work. > > ------------------------------------------------------------------------- > > use strict; > > my $idNum=0; > my $count=0; > for(1..10){ > my %hash; > open(data,"<keys.txt"); > while(<data>){ > chomp; > $hash{$_}=$_; > } > close(data); > > $idNum = rand(9999999999999); > $count++; > open(data2,">>keys.txt"); > print data2 "$idNum\n"; > close(data2); > > if ($hash{$idNum}){ print "DUPLICATE - $idNum<br>\n";}else{ print "UNIQUE > $idNum<br>\n"; } > > } > > print "$count"; > >