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 に答える