LoginSignup
2
2

More than 5 years have passed since last update.

スゲい簡単なPerl入門 9th Day PerlとかRubyとかコマンドで UUID を作るときのそれっぽい方法

Posted at

UUIDを作るとき、色んな方法があるとは思いますが、備忘録です。

UUIDとは

  • Universally Unique Identifier
  • 汎用一意識別子

一意に特定可能な識別子。
16バイトの数値で表される。
例: a7c4eab7-1540-47bd-9302-7fda5df5c54e

UNIXコマンド

uuidgen
$ uuidgen -r
$ uuidgen -t

-r (デフォルト)
乱数を使って UUID を生成
-t
現在時刻とMACアドレスを元に生成

プログラム

Perlだとこんな感じ。

InstallLibrary
$ sudo perl -MCAPN -e 'install Data::UUID'
UUID
use Data::UUID;
my $gen_uuid = Data::UUID->new()->create_str();

とか

namespace
use Data::UUID qw(NameSpace_URL);
my $gen_uuid =  Data::UUID->new->create_from_name_str(NameSpace_URL, "hoge.hoge.jp")

とか。

ちなみにRubyだとこうらしい。

uuidtools
require 'uuidtools'
p UUIDTools::UUID.ramdom_create.to_s

で、中身はと言うと、だいたいこんな感じかな?

現在の時間を取得

すごい難しい乱数作成
で、sha1と現在時刻を使うらしいのでこんな感じかなぁって書いてみた。

SHA1&Time
use Digest::SHA1 qw(sha1_hex);
use Time::HiRes qw(gettimeofday);

sub _tsuskuruzo {
   
  my $uuid = substr( sha1_hex( gettimeofday . $hoge ), 0, $byte_num);
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2