Во, пример такой сортировки.
Сортируется по именам (2-е поле), если имена совпадают, то сортируется по ID (первое поле)
Имена я использовал английские сами знаете почему - если нужны русские, то читайте тут FAQ и включайте locale
#!/usr/bin/perl -w
my @array =( \'1;Pete;Red\',
\'7;Mike;Green\',
\'9;Barry;Red\',
\'3;Ann;Blue\',
\'2;Merry;Green\',
\'11;Pete;Pink\');
map {print "$_\\n"} sort by_field(@array);
sub by_field {
my @a=split(/;/, $a);
my @b=split(/;/,$b);
($a[1] cmp $b[1])||($a[0] <=> $b[0]);
}
Результат:
3;Ann;Blue
9;Barry;Red
2;Merry;Green
7;Mike;Green
1;Pete;Red
11;Pete;Pink