[perl] сортировка списка

Fake_queen

есть список след. вида:
а 1 бб еее
в 3 9 ееге
г 10 15 еегег
б 10 44 еггг
....
нужно отсортировать список по первому элементу в строке, т.е.:
а 1 бб еее
б 10 44 еггг
в 3 9 ееге
г 10 15 еегег
....
пробовал с помощью sort в сочетание со split:
 
foreach (@a) {
($name,$strand,$start,$end) = split /\s/, $_;
$name{$_}=$name;
push @s, $name;
}
print sort {$name{$a} cmp $name{$a}} @a;

но что-то не получается.. как это можно еще сделать?

stm7583298

Если тебе не катит просто сортировать эти строки, то скорее всего поможет вот такая штука:

sub first_item {
@a1 = split /\s/, $a;
@b1 = split /\s/, $b;
$a1[0] cmp $b1[0];
}
@m = ("...", "...", "...");
@m1 = sort first_item @m;

eduard615


johnny:> perl -Mlocale -e 'print join "\n" , sort {$a cmp $b} "а 1 бб еее","в 3 9 ееге","г 10 15 еегег","б 10 44 еггг";print"\n"'
а 1 бб еее
б 10 44 еггг
в 3 9 ееге
г 10 15 еегег
johnny:>

perldoc loсale короче
Оставить комментарий
Имя или ник:
Комментарий: