我想创建一个UniqueId。有没有我可以调用的函数,这样每次我使用它时它都会给我一个新的 ID,总是具有不同的值?
user2568702
问问题
19561 次
9 回答
25
使用Data::UUID生成唯一 ID:
use Data::UUID;
$ug = Data::UUID->new;
$uuid1 = $ug->create(); # Or create_str()
于 2013-09-05T05:17:24.310 回答
8
您也可以使用它的更好方法
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;
}
从这里你可以了解UUID::Generator::PurePerl
于 2013-09-05T05:19:39.897 回答
6
使用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;
于 2013-12-02T18:35:34.897 回答
5
可能值得注意的是,在 Windows 机器上,您也可以使用 Win32:
use Win32;
my $guid = Win32::GuidGen();
于 2016-09-08T15:18:19.630 回答
2
如果您对可以使用的模块有一些限制,并且您在 Linux 上运行脚本,则可以使用以下解决方法:
my $uuid = `cat /proc/sys/kernel/random/uuid`;
您无需在系统上安装新软件包即可使用它。
于 2020-05-12T12:00:47.673 回答
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
于 2013-09-05T06:50:05.020 回答
1
我也非常喜欢uuidgen
在这个答案中使用 Linux OS 工具的想法:
Perl 中的版本 5 UUID
在我的 Debian Linux 系统上,我有它/usr/bin/uuidgen
于 2019-12-27T04:40:08.400 回答
-1
于 2018-06-28T22:43:16.387 回答
-1
set
将您想要的字符混合到数组中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;
}
输出样本
Generate passwords
yWXjV{{z0=6T-NVt
<ETH0(9IETcb[c!=
]cONV~*6PoTp1L~<
F8Ve>^u<Hymq]ZFd
<fdV(Z[~EUE?_Ufe
9A9y*iJ3Wta:jg*Y
7r2pP<1voI@x=cFe
Z7bZdha+U;:7aAeT
c2?a7S"mEpt%q43V
uC^q5]iPg~8E4CwJ
gwK+CBM?bnvgS@hg
Generate UUIDs
arrle2tc-x414-o8qi-i82f-obmwrbumlows
xmeg8ekk-ka2m-k4vo-l6xn-lor2s3z1lgn4
35d36bfr-jngc-6qiv-ubq8-nlysa2oaja12
m6yi4joo-1lpv-8obg-zjed-yesyqnq6rjxh
d3edwfbf-znwo-8s2o-4ld3-vntd20ps1fe5
twim8wr7-z0jj-0a20-uypt-sk80yubnaj8h
b4fkoodo-sp16-sa0h-2nlm-kicej06wlwn6
1r1rjy50-2wjo-620t-5ffn-5quw5qjztdfo
tr005kl0-k6yt-syz2-nrhq-k83ghybxjzm1
opxm1mjz-mvu8-feyf-if5o-411zayail60w
380v388j-acct-3zap-0nty-688b04eozrkx
于 2020-05-12T17:40:39.813 回答