Well, If you want more room in the double, then do the base conversion before doing the concatenation, thusly:
# Generate a truly unique ID
sub GenerateBase
{
my $base = shift;
$base = 62 if $base > 62;
my @nums = (0..9,'a'..'z','A'..'Z')[0..$base-1];
return sub
{
my $number = shift;
my $rep = ""; # this will be the end value.
while( $number > 0 )
{
$rep = $nums[$number % $base] . $rep;
$number = int( $number / $base );
}
return $rep;
}
}
my $ToBase62 = GenerateBase( 62 );
my $ID = $ToBase62->( $$ ) . $ToBase62->( time );