perl - 哈希键中哪些字符有效?

标签 perl syntax

根据主题:可以在哈希键中使用哪些字符,或者,如果较短,哪些不能使用?

另外,使用长哈希键(如完整路径名)有什么问题吗?

最佳答案

How Hashes Really Work关于这个话题的讨论。简而言之,只要您引用键(非插值 q{}),您就可以使用您想要的任何字符。

关于 Dana 的回答,不,匹配更长的 key 不会花费更长的时间:散列 key 将花费无限长的时间,但仅此而已。

作为引用,这是 Perl 5.10.0 中的散列函数:

#define PERL_HASH(hash,str,len)
 STMT_START {
    register const char * const s_PeRlHaSh_tmp = str;
    register const unsigned char *s_PeRlHaSh = (const unsigned char *)s_PeRlHaSh_tmp;
    register I32 i_PeRlHaSh = len;
    register U32 hash_PeRlHaSh = PERL_HASH_SEED;
    while (i_PeRlHaSh--) {
        hash_PeRlHaSh += *s_PeRlHaSh++;
        hash_PeRlHaSh += (hash_PeRlHaSh << 10);
        hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6);
    }
    hash_PeRlHaSh += (hash_PeRlHaSh << 3);
    hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11);
    (hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15));
} STMT_END

关于perl - 哈希键中哪些字符有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906343/

相关文章:

Haskell - 语法错误

r - 当两个 df 中的 char col 都可以充当键时,使用另一个 df 中的列上的条件来更新 df col 值

在 Windows 7 上使用 Apache 2.2 的 Git 服务器设置

php - 解析 WordPress XML,斜杠 :comments syntax?

python - while not __ 和 while __ == false 之间的区别? (Python)

mysql - 输入后如何查看输入的具体SQL语法

regex - 如何在 grep 中每个文件匹配一次?

linux - Perl 中的 Getopt::Std 重复参数

perl - 如何轻松提取图像的颜色百分比?

r - 我可以在 R 中使用列表作为哈希吗?如果是这样,为什么这么慢?