Creating Anonymous Hashes and Arrays
If
we look at
Dumper’s output more closely, we can see
that something interesting is going on. Here’s a simplified
version of it:
$HoH = {
key1 => {
key_a => 'value_a',
key_b => 'value_b',
},
key2 => {
key_a => 'value_a',
key_b => 'value_b',
},
};What’s up with the curly braces? We haven’t seen them used like this before.
What’s up is the fourth and final piece of reference magic we need to know: how to initialize an anonymous hash and return a reference to it at the same time. We do that by putting curly braces around it, where we would normally put the enclosing parentheses:
$hash_ref = {
key1 => 'value1',
key2 => 'value2',
};Here we have created an anonymous hash with two keys and two
corresponding values, and returned a reference to it that we’ve
then stuck in the scalar variable $hash_ref. If we
take a bunch of those anonymous hashes and make the references that
they return the values in an all-encompassing hash, and if we make
that all-encompassing hash an anonymous hash and return a reference
to it, we get a reference to a hash of hashes, or HoH. That’s
what Data::Dumper’s
Dumper routine printed out for us.
We can do similar reference magic with square brackets to create and return an anonymous array reference:
my $ary_ref = [ 'item1', 'item2', 'item3' ];
If we nest those we get a reference to an LoL, or List of Lists:
my $LoL = [
[ 'item1', 'item2', 'item3' ],
[ 'item1', 'item2', 'item3' ],
[ 'item1', 'item2', 'item3' ],
];And we can ...