我正在创建一个由各种用户执行的一些测试结果的文件导向数据库。为此,我需要为数据库中的每个条目生成唯一的ID。的ID必须满足下列要求:如何在Perl中创建唯一标识符?
- IDS应该是相当小的(至多6个字符)
- 对于每个测试实例,并且每个时间相同的id应生成
我尝试什么用户组合是一个简单的BKDR散列函数与种子值31和用ORD()函数,如下所示:
@chars = split(//,$hash_var);
$hash = 0;
$seed = 31;
foreach $char (@chars) {
if($char !~ m/\d/) {
$hash = ($seed * $hash) + ord($char);
}
else {
$hash = ($seed * $hash) + $char ;
}
}
$hash = ($hash & 0x7FFFFFFF) % 1000;
$hash = "$chars[0]$chars[$#chars]$hash" ;
这有时会导致同样的结果为各种组合,即ù没有观察到独特性。他们有什么其他的方式来完成这个吗?改变种子价值是否有助于实现独特性?
你认为你究竟是从这个原型中走出来的?在使用另一个链接之前,您可能需要阅读以下链接:http://www.perl.com/language/misc/fmproto.html – 2009-06-30 12:57:25
混合语言的问题。我编写了getUniqueId(),然后决定修复原型而不是删除它。 – 2009-06-30 13:41:20