my %hash = ( fred => 'wilma',
barney => 'betty');
my $hashref = \%hash;
my $freds_wife = $hashref->{fred};
my %hash_copy = %$hash # or %{$hash} as noted above.
Так, в чем смысл гибкости синтаксиса? Давайте попробуем это:
my %flintstones = ( fred => { wife => 'wilma',
kids => ['pebbles'],
pets => ['dino'],
}
barney => { # etc ... }
);
На самом деле для таких глубоких структур данных часто удобнее начинать с ссылки:
my $flintstones = { fred => { wife => 'Wilma',
kids => ['Pebbles'],
pets => ['Dino'],
},
};
ОК, Фред получает нового питомца, «Велоцираптор»
push @{$flintstones->{fred}->{pets}}, 'Velociraptor';
Сколько домашних животных у Фреда?
scalar @ {flintstones -> {fred} -> {pets}}
Давайте покормить их ...
for my $pet ( @ {flintstones->{fred}->{pets} } ) {
feed($pet)
}
и так далее. Сначала суп с фигурными скобками может показаться немного пугающим, но в конце концов с ними довольно легко справиться, если вы будете последовательны в том, как вы справляетесь с ними.