#! /usr/bin/perl -w use strict; my %data; while (my $line = ) { chomp $line; my @array = split '\|', $line; my $key = shift @array; $data{$key} = \@array; } #for (sort keys %data) for (sort {$data{$a}[0] cmp $data{$b}[0]} keys %data) { print $_, '=', join (', ', @{$data{$_}}), "\n"; } __DATA__ 1|name9|blah|blah|blah 2|name8|blah|blah|blah 3|name7|blah|blah|blah 4|name6|blah|blah|blah 5|name5|blah|blah|blah 6|name4|blah|blah|blah 7|name3|blah|blah|blah 8|name2|blah|blah|blah 9|name1|blah|blah|blah