2

値として配列を持つハッシュを作成しようとしています。

値 (配列) の最初の要素はスカラーです。値の 2 番目の要素 (配列) は別のハッシュです。

次のように、このハッシュのキーと値に値を入れました。

${${$senseInformationHash{$sense}[1]}{$word}}++;

ここ、

私の主なハッシュ -> senseInformationHash

私の値 -> 配列です

それで、${$senseInformationHash{$sense}[1]}私のハッシュへの参照を教えてください

次のようにキーと値を入力します。

${${$senseInformationHash{$sense}[1]}{$word}}++;

これが正しい方法かどうかはわかりません。私は立ち往生していて、この複雑なものをどのように印刷できるかわからないので. 正しく実行できているかどうかを確認するために、印刷したいと思います。

どんな助けでも大歓迎です。前もって感謝します!

4

3 に答える 3

4

書くだけ

$sense_information_hash{$sense}[1]{$word}++;

そしてそれで終わります。

Perl は CamelCase に嫉妬するので、適切なアンダースコアを使用する必要があります。そうしないと、唾を吐き出したり、一般的に誤動作したりする可能性があります。

于 2010-11-12T01:04:59.737 に答える
2

ハッシュ値は配列ではなく、配列参照です。

正しく実行されているかどうかを確認するには、構造全体をダンプします。

my %senseInformationHash;
my $sense = 'abc';
my $word = '123';
${${$senseInformationHash{$sense}[1]}{$word}}++;
use Data::Dumper;
print Dumper( \%senseInformationHash );

それはあなたを得る:

$VAR1 = {
      'abc' => [
                 undef,
                 {
                   '123' => \1
                 }
               ]
    };

\1:おそらく、値を1にし、スカラー1への参照ではないことに注意してください。${ ... }++;中括弧内の内容をスカラー参照として扱い、参照されるスカラーをインクリメントするため、後者を取得しています。

${$senseInformationHash{$sense}[1]}{$word}++;と同様に、必要なことを実行します$senseInformationHash{$sense}[1]{$word}++http://perlmonks.org/?node=References+quick+referenceが理由を理解するのに役立つかもしれません。

于 2010-11-12T03:40:59.223 に答える
0

Axeman と TChrist に感謝します。

アクセスする必要があるコードは次のとおりです。

    foreach my $outerKey (keys(%sense_information_hash))
{
  print "\nKey => $outerKey\n";
  print "  Count(sense) => $sense_information_hash{$outerKey}[0]\n";

        foreach(keys (%{$sense_information_hash{$outerKey}[1]}) )
    {
        print " Word wt sense => $_\n";
        print " Count  => $sense_information_hash{$outerKey}[1]{$_}\n"; 
    }
}

これは現在機能しています。どうもありがとう!

于 2010-11-12T01:19:08.177 に答える