in reply to Mapping to an associative hash

You can use your knowlege of the keys/column names to make the file an array of hashes or, if there can be constructed a 'primary key' from the data, a hash of hashes. Assuming that the 'id' is unique, it might serve. In any case, make a constant array of your column names and fill in a hash slice over that with the data.

Here is yet another way, making a hash of hashes on id, with the second level hashes constructed directly from a list,

my @keys = qw( id username domain address); # and so on my %addressbook; while (<>) { # or whatever handle my @data = split /\t/; $addressbook{$data[0]} = { map { ($keys[$_] => $data[$_]) } 1..$#keys }; }
There are lots of ways to do this.

After Compline,
Zaxo