我正在尝试使用perl中的哈希表。当我使用数组索引作为哈希表中的键时,我遇到了问题。
my @array;
my %Mappings;
$Mappings{$array[0]} = 'First';
$Mappings{$array[1]} = 'Second';
print "$Mappings{$array[0]} \n $Mappings{$array[1]} \n";
此代码的输出始终为秒。我无法使用此代码访问值First。
我应该考虑任何其他步骤来访问价值吗?
答案 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";