my %Data; while() { my ( $City, $Value ) = split; push ( @{$Data{ $City }}, $Value ); } __DATA__ amsterdam 23 amsterdam 88 london 65 ny 10 ny 16 la 21 la 65 miami 9 lapaz 10 #### ( amsterdam => [23, 88], london => [65], ny => [10, 16], la => [21, 65], miami => [9], lapaz => [10] )