It appears that you misunderstood. My fellow monks didn't say that calling srand is the solution. They said that calling srand is the problem.
Now, you could call srand in the children. But that's not a very good solution, since your seed is probably not going to be as good as Perl's. Ideally, what you want to do is delay srand getting called until after you've forked by avoiding calls to rand until after you've forked.
Since IO::Socket::SSL apparently calls rand on load, you need to delay its loading.
use strict;
foreach (1 .. 5) {
my $pid = fork();
next if $pid;
require IO::Socket::SSL; <---
random();
random();
exit;
}
sub random {
print sprintf("Process %d: %d", $$, int(rand(100000))), "\n";
}