use strict; use warnings; use Data::Dump; my $HASH1 = { 'Alabama' => ['Andalusia', 'Anniston', 'Clanton', 'Eufaula', 'Auburn', 'Bessemer', 'Eufaula', 'Auburn', 'Bessemer' ], 'California' => ['Barstow', 'Barstow'], 'Georgia' => ['Darien'], 'New York' => ['Amsterdam', 'Coney Island', 'Coney Island', 'Beacon', 'Becon'] }; print "Values stored in anonymous arrays:\n"; dd $HASH1; my $HASH2; for my $key (keys %$HASH1) { ++$HASH2->{$key}{$_} for @{ $HASH1->{$key} }; } print "\nValues stored in anonymous hashes:\n"; dd $HASH2;