"the" => (1, 4), "and" => (2, 3)
変な書き方です
"the", 1, 4, "and", 2, 3
ハッシュに割り当てられた場合、これは次と同等になります
%h = ();
$h{"the"} = 1;
$h{4} = "and";
$h{2} = 3;
あなたがしたい
%Parent = (
1 => {
"the" => [ 1, 4 ],
"and" => [ 2, 3 ]
},
2 => {
"but" => [ 1, 2 ],
"as" => [ 3, 4 ]
}
)
{ }
ハッシュを作成し、内部式 (存在する場合) の結果をハッシュに代入し、そのハッシュへの参照を返し、[ ]
配列を作成し、内部式 (存在する場合) の結果を配列に代入し、返すのと同じようにその配列への参照。
もちろん、どれもあなたの質問に答えません! あなたの質問に。
my %Parent = (
1 => {
"the" => [1, 4],
"and" => [2, 3]
},
2 => {
"but" => [1, 2],
"as" => [3, 4]
}
);
基本的に同等です
my %Parent;
$Parent{1}{the}[0] = 1;
$Parent{1}{the}[1] = 4;
$Parent{1}{and}[0] = 2;
$Parent{1}{and}[1] = 3;
$Parent{2}{but}[0] = 1;
$Parent{2}{but}[1] = 2;
$Parent{2}{as }[0] = 3;
$Parent{2}{as }[1] = 4;
push
多くの場合、配列を設定するための代入よりも便利です。それは次のようになります。
my %Parent;
push @{ $Parent{1}{the} }, 1;
push @{ $Parent{1}{the} }, 4;
push @{ $Parent{1}{and} }, 2;
push @{ $Parent{1}{and} }, 3;
push @{ $Parent{2}{but} }, 1;
push @{ $Parent{2}{but} }, 2;
push @{ $Parent{2}{as } }, 3;
push @{ $Parent{2}{as } }, 4;
自動活性化のおかげで、
push @{ $Parent{$k1}{$k2} }, $n;
の略です
push @{ ( $Parent{$k1} //= {} )->{$k2} //= [] }, $n;