0

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

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

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

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

4

2 回答 2

3

给定$array[0]$array[1]都是未定义的,它们将映射到一个空字符串以进行哈希访问。所以是的,预计它们将引用相同的元素。

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

于 2013-06-29T22:32:02.717 回答
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";
于 2013-06-30T00:00:09.017 回答