http://www.perlmonks.org?node_id=1006304


in reply to Having a problem creating a hash with the map function

# This is the goal #%Belfast_car_dealer_hash = ("Toyota"=> 1, # "Chrysler" => 1); # "Ford" => 1);

The following will initialize your hash the way you want:

my %Belfast_car_dealer_hash = map { $_ => 1 } @dealers[1,3,4];

Dumper output of %Belfast_car_dealer_hash:

$VAR1 = { 'Chrysler' => 1, 'Toyota' => 1, 'Ford' => 1 };

Update: Added [1,3,4] to limit key creation.

My apologies; I believe I've misunderstood. What about using a hash of arrays, where the key is the city and the value is a reference to an array of dealers? Perhaps this data structure would be helpful:

use strict; use warnings; my @dealers = ( "Nissan", "Toyota", "Tesla", "Chrysler", "Ford", "Gene +ral Motors" ); my %citiesDealers = ( 'Belfast' => [ @dealers[ 1, 3, 4 ] ], 'Dublin' => [ @dealers[ 2, 3, 0 ] ], 'Cork' => [ @dealers[ 0, 3 ] ], 'Derry' => [ @dealers[ 1, 4, 2 ] ], 'Tralee' => [ @dealers[ 2, 1, 0, 5 ] ] ); print $_, "\n" for @{ $citiesDealers{'Belfast'} };

Output:

Toyota Chrysler Ford