# Each city may have different tables, so trawl through all the # cities to find available table names my %tables; for my $city (keys %data) { $tables{$_}{$city}=$data{$k}{$_} for keys $data{$k}; } print "Which table? Choices are:\n", join(", ", sort keys %tables), ">\n"; chomp($table=<>); print "Which city? Choices are:\n", join(", ", sort keys %{$tables{$table}}), ">\n"; chomp($city=<>); ...