最初の例と 2 番目の例の違いを見ると、構造が少しずれていると思います。これはあなたが望むものにより多く一致すると思います:
{
DATE => date_time_value,
PARAMETERS => {
param_name1 => parameter_value1,
param_name2 => parameter_value2
}
}
このように、データを含む構造は次のようになります。
{
DATE_TIME => "10/31/2031 12:00am",
PARAMETERS => {
COLOR => "red",
SIZE => "Really big",
NAME => "Herman",
}
}
通常、値を含むフィールドを持つオブジェクトを考えます。SQL テーブルまたはスプレッドシートの行を考えてみてください。見出しのある列と、値を含む行があります。
従業員を取りましょう。名前、年齢、職業、電話番号があります。
{
NAME => "Bob Smith",
AGE => "None of your business",
JOB => "Making your life miserable",
PHONE => "555-1212"
}
テーブルとは異なり、各エントリには他の構造を含めることができます。たとえば、通常、人々は複数の電話番号を持っており、名前とは別に姓を保存したい場合があります。
{
NAME => {
FIRST => "Bob",
LAST => "Smith"
}
AGE => "None of your business",
JOB => "Making your life miserable"
PHONE => {
CELL => "555.1234",
WORK => "555.1212"
}
}
次に、同時に複数の電話を持っている人がいます。たとえば、ボブは 2 台の携帯電話を持っています。この場合、各電話タイプ フィールドを値の配列にします。
{
NAME => {
FIRST => "Bob",
LAST => "Smith",
}
AGE => "None of your business",
JOB => "Making your life miserable"
PHONE => {
CELL => ["555.1234", "555.4321"]
WORK => ["555.1212"]
}
}
そしてそれを初期化するには:
my $person = {};
$person->{NAME}->{FIRST} = "Bob";
$person->{NAME}->{LAST} = "Smith";
$person->{AGE} = "None of your business";
$person->{JOB} = "Making your life miserable";
$person->{PHONE}->{CELL}->[0] = "555.1234";
$person->{PHONE}->{CELL}->[1] = "555.4321";
$person->{PHONE}->{WORK}->[0] = ""555.1212";