sub OpenFF { my ($file,$dlmt) = @_; $dlmt = $_[1] || "\t"; my(%hash,%row); open(READ,$file) or return; my @headers = split /$dlmt/, ; s/^\s+|\s+$//g for @headers; chomp(@row{@headers} = split /$dlmt/, ) and %hash = map { $_=>{ $hash{$_} ? %{$hash{$_}} : (), $row{$headers[0]}=>$row{$_}} } @headers while !eof(READ); return %hash; }