对作为哈希键

Zac*_*ack 8 perl hash list

有没有人知道如何使用perl作为密钥的字符串对进行散列?

就像是...

{
    ($key1, $key2) => $value1;
    ($key1, $key3) => $value2;
    ($key2, $key3) => $value3;
Run Code Online (Sandbox Code Playgroud)

等等....

fri*_*edo 12

您不能将一对标量作为哈希键,但您可以创建多级哈希:

my %hash;
$hash{$key1}{$key2} = $value1;
$hash{$key1}{$key3} = $value2;
$hash{$key2}{$key3} = $value3;
Run Code Online (Sandbox Code Playgroud)

如果要一次定义所有内容:

my %hash = ( $key1 => { $key2 => $value1, $key3 => $value2 },
             $key2 => { $key3 => $value3 } );
Run Code Online (Sandbox Code Playgroud)

或者,如果它适用于您的情况,您可以将您的密钥连接在一起

$hash{$key1 . $key2} = $value1;   # etc
Run Code Online (Sandbox Code Playgroud)

或者添加分隔符以分隔键:

$hash{"$key1:$key2"} = $value1;   # etc
Run Code Online (Sandbox Code Playgroud)

  • 你的第一个建议是伟大的,至于第二个,最好有一个分隔符,以防止碰撞,如123 456和12 3456 ...... (4认同)
  • 为此目的定义了ASCII字符; 单位分隔符(hex 1f)可能是最合适的. (3认同)