我想创建一个 UniqueId 。有没有我可以调用的函数,这样每次当我使用它时它会给我一个新的Id,总是有不同的值?
答案 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)
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)
答案 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;
}