use Text::xSV; my $parser = Text::xSV->new( filename=>$datafile, sep=>"\t" ); $parser->read_header; my %data; while (my $row_ref = $parser->get_row) { $data{ $row_ref->[1] } = $parser->extract_hash; }