use strict; use Data::Dumper; my $table={}; while (my $line=){ chomp $line; my ($login,$name,$location,$info,$info2,$infoblah)= split(",",$line); if ( not defined($table->{$location})){ $table->{$location}=[]; } push @{$table->{$location}},{name => $name, login => $login, info => $info, info2 => $info2, infoblah => $infoblah }; } print Dumper($table); __END__ geroges,George Smart,West,bla,blah,blahbla pams,Pam Smart,South,bla,blah,blahbla dumas,Ed Dumas,West,bla,blah,blahbla fink,George Fink,West,bla,blah,blahbla gerogel,George Learch,North,bla,blah,blahbla frankf,Frank Furter,West,bla,blah,blahbla