I have a program that reads and processes approximately 8 million lines of data. For each line read it does: my @aa = split(/\t/); @{$ref}{@head} = @aa;