in reply to Slice a hash to get a subset hash.
What I usually do is something like this (your final solution in the OP):
my %location = map { $_ => $london{$_} } qw(Long Lat Elevation);
However, if that isn't clean enough for you, you could use prototypes to create a bit of syntactic sugar:
sub extract(\%@) { my $h = shift; map { $_ => $h->{$_} } @_; } # usage my %location = extract %london, qw(Long Lat Elevation); my %stats = extract %london, 'Population', 'Area'
In Section
Seekers of Perl Wisdom