while () { chomp; my %record; @record{ @fields } = split /\|/; #### push @records, \%record; } #### my @fields = qw( time company_name email member1 member1phone data time2 pictureurl password website member2 member2phone address citystatezip fax ); #### for ( sort { $a->{'company_name'} cmp $b->{'company_name'} } @records ) { print "$_->{'company_name'} and other fields here.\n" } #### while () { chomp; my %record; @record{ @fields } = split /\|/; $records{ $record{'company_name'} } = \%record; } # this makes the sorting a bit more straightforward: for ( sort keys %records ) { my %rec = %{ $records{$_} }; print "$rec{'company_name'} and other fields here.\n" }