]>
git.p6c8.net - selfforum.git/blob - selfforum-cgi/shared/Id.pm
3 ################################################################################
7 # Authors: André Malo <nd@o3media.de>, 2001-05-03 #
9 # Description: compose an unique ID (in CGI context) #
11 ################################################################################
19 ################################################################################
23 use base
qw(Exporter);
29 ### sub unique_id () ###########################################################
31 # compose an unique ID
35 # Return: Scalar: unique ID
40 my $ip=$ENV{REMOTE_ADDR
};
42 my $port=$ENV{REMOTE_PORT
};
43 my $rand=int(rand(time));
45 # works only with IPv4! (will be changed later...)
47 $ip = hex(join ('',map {sprintf ('%02X',$_)} split (/\./,$ip)));
49 join '' => map {to_base64
($_)} ($time, $port, $ip, $rand, $$);
52 ### sub to_base64 ($) ##########################################################
54 # only converts (max.) 32-bit numbers into a system with base 64
56 # Params: $x - number to convert
58 # Return: converted number ;-)
62 my $y = $table[$x % 64];
64 $y = $table[$x % 64].$y while ($x = int ($x/64));
70 # 64 'digits' (for our base 64 system)
72 @table = ('a'..'z','-','0'..'9','A'..'Z','_');
76 *may_id
= eval join quotemeta join ('' => @table) => (
77 q
[sub {local $_=shift; defined and length and not y
/],
87 ### end of Id ##################################################################
patrick-canterino.de