Just to make things clear (well, it had me stumped for awhile), calin means replacing the () in the values of your page hashes by . That way, you're assigning an anonymous array to the value of the hash, instead of a list, as you are currently doing.
BTW, the @AoH assignment throws a warning:
Odd number of elements in anonymous hash at aoh.pl line 21.
That is because of the parentheses instead of square brackets.
As to your second question: it's an array of hashes one of whose values is an array of hashes. So, in a sense, it is a AoHoAoH :)