UUID

ユニークな ID の生成方法についてちと調べてみると、
どうやら業界では
UUID
http://hegel.ittc.ku.edu/topics/internet/internet-drafts/draft-l/draft-leach-uuids-guids-01.txt

って奴が標準のようだ。
UUID は 128bit で、人間が見やすい形式に 8-4-4-4-12 の 16 進数
表記したものは GUID というらしい。

UUID には 4 つの形式があるらしいけど、

time-based と random がよく使われてる模様。

Linux の場合

# uuidgen
http://www.linux.or.jp/JM/html/e2fsprogs/man1/uuidgen.1.html
を使う
# /proc/sys/kernel/random/uuid を使う

Perl の場合

こんな感じかのぉ。
#!/usr/bin/perl
# Leach-Salz 形式の UUID をランダムに生成

sub getUUID {
my(buf);
open(FL,'/dev/urandom');
read(FL,$buf,16);
close(FL);
my(@bar(=unpack('C*',$buf);
$bar[6] = ($bar[6] & 0x0f) | 0x40;
$bar[8] = ($bar[8] & 0x3f) | 0x80;
return pack('C16',@bar);
}
sub getGUID {
my(@bar)=unpack('C*',&getUUID());
return sprintf('%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x',@bar);
}
print &getGUID()."\n";