%entry is a HoHoH - Hash of Hash of Hash. The first hash is keyed by name. That accesses a hash keyed by UID. That accesses a hash keyed by various parameters including the host name. In the line:
my @hosts = map {$entries{$name}{$_}{host}} keys %{$entries{$name}};
we generate a list of the hosts associated with a particular name. The hosts are in the 'host' parameter in the hash accessed by UID.
keys %{$entries{$name}} generates a list of UIDs for a given name. Remember that hashes and arrays only store scalar values so what is stored is really a reference to a hash. So the % sigil in %{...} dereferences the hash reference to be a hash which keys then returns the list of keys for.
For each UID in the list map {$entries{$name}{$_}{host}} retreives the host name - the map generates an output list with each element from the input list replaced by the matching host name.
In reply to Re^5: trying to decide best data structure for problem at hand.
by GrandFather
in thread trying to decide best data structure for problem at hand.
by mikejones
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |