我们如何在Perl中创建唯一ID

时间:2013-09-05 05:13:36

标签: perl perl-module

我想创建一个 UniqueId 。有没有我可以调用的函数,这样每次当我使用它时它会给我一个新的Id,总是有不同的值?

9 个答案:

答案 0 :(得分:21)

使用Data::UUID生成唯一ID:

use Data::UUID;

$ug    = Data::UUID->new;
$uuid1 = $ug->create();   # Or create_str()

答案 1 :(得分:7)

更好的方法也可以使用

use UUID::Generator::PurePerl;

sub create_search_id {
    my $this =shift;
    my $args=shift;
    my $ug = UUID::Generator::PurePerl->new();
    my $uuid1 = $ug->generate_v1();
    return $uuid1;
}

从这里您可以了解Link

答案 2 :(得分:5)

可能值得注意的是,在Windows机器上,您也可以使用Win32:

use Win32;    
my $guid = Win32::GuidGen();

答案 3 :(得分:4)

使用Data::GUID

的另一种选择
use Data::GUID;
my $guid = Data::GUID->new;
my $uniqueIdString = guid->as_string;

use Data::GUID;
my $uniqueIdString = Data::GUID->new->as_string;

答案 4 :(得分:1)

我使用了Data::Uniqid,这个模块有3种方法:

use Data::Uniqid qw ( suniqid uniqid luniqid );
$id = suniqid; #genrates a very short id valid only for the localhost and with a liftime of 1 day
$id = uniqid;  #generates a short id valid on the local host 
$id = luniqid; #generates a long id valid everywhere and ever

答案 5 :(得分:0)

尝试一下:

Firebase-style push id guid in Perl

它按照生成时间的字母顺序生成向导。如果您想按记录GUID的生成时间顺序对其进行排序,则很有用。

答案 6 :(得分:0)

我也非常喜欢在此答案中使用Linux OS工具uuidgen的想法: Version 5 UUID in Perl

在我的Debian Linux系统上,我在/usr/bin/uuidgen上有它

答案 7 :(得分:0)

如果对可以使用的模块有一些限制,并且您正在Linux上运行脚本,则可以使用以下解决方法:

my $uuid = `cat /proc/sys/kernel/random/uuid`;

您无需在系统上安装新软件包即可使用它。

答案 8 :(得分:-1)

将所需的字符混入set的{​​{1}}

UUID

输出样本

use warnings;
use feature 'say';

say "Generate passwords\n";
say genPass(16) for (0..10);
say '';
say "Generate UUIDs\n";
say genUUID() for (0..10);

sub genPass {
    my $len = shift;
    my @set = ('A'..'Z','a'..'z',0..9,split('','~!@#$%^&*()_+{}[]-=;:<>?"\''));
    my $num = $#set;
    my $uuid;

    $uuid .= $set[rand($num)] while $len--;

    return $uuid;
}

sub genUUID {
    my $uuid;
    my @set = ('a'..'z',0..9);
    my $num = $#set;

    $uuid .= $set[rand($num)] for 1..8;
    $uuid .= '-';
    for (1..3) {
        $uuid .= $set[rand($num)] for 1..4;
        $uuid .= '-';
    }

    $uuid .= $set[rand($num)] for 1..12;

    return $uuid;
}