in reply to Mapping to an associative hash

Sure thing! If you have the keys you want in an array @keys (in the order that the data appears in the file), then all you need to say is:
while (<FILE>) { my %data; chomp; @data{@keys} = split /\t/; # then call subroutine }