use Digest::MD5; my $md5 = Digest::MD5->new; my $remote = $ENV{ REMOTE_ADDR } . $ENV{ REMOTE_PORT }; my $unique = $md5->md5_base64( time, $$, $remote, $email ); $unique =~ tr|+/=|-_.|; # Make non-word characters URL-friendly