数组索引作为哈希表中的键

时间:2013-06-29 22:25:37

标签: perl hashtable associative-array

我正在尝试使用perl中的哈希表。当我使用数组索引作为哈希表中的键时,我遇到了问题。

my @array;
my %Mappings;
$Mappings{$array[0]} = 'First';
$Mappings{$array[1]} = 'Second';
print "$Mappings{$array[0]} \n $Mappings{$array[1]} \n";

此代码的输出始终为秒。我无法使用此代码访问值First。

我应该考虑任何其他步骤来访问价值吗?

2 个答案:

答案 0 :(得分:3)

鉴于$array[0]$array[1]未定义,它们将映射到空字符串以进行散列访问。所以是的,预计他们会引用相同的元素。

你能解释一下你想要达到的目标吗?

答案 1 :(得分:0)

如果你的元素具有相同的值,例如,undef,1,2,'a'......那么你将获得相同的哈希值。为避免这种情况,您可以使用数组元素的地址:

use warnings;
use strict;
my @array = ('1', '1');
my %Mappings;
$Mappings{\$array[0]} = 'First';
$Mappings{\$array[1]} = 'Second';
print "$Mappings{\$array[0]} \n $Mappings{\$array[1]} \n";