|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5004/75.151 11 Dec 2006 03:35:05 To : Nikolay Pichtin Subject : Отсортировать не могу -------------------------------------------------------------------------------- NP> Добрый полдень All ! NP> NP> Создается такого вида массив NP> NP> my @fil = NP> (".1",".2","1.1","2.1","1.1.1","1.2","2.1.1","2.2","1.1.2","1.2.2","1.1.1.1" NP> ,"1 .2.1"); my @array = sort { ($a =~ /(.*)\.(\d)$/)[1] <=> ($b =~ NP> /(.*)\.(\d)$/)[1] } @fil; foreach (@array) { print qq~$_\n~; } Hадо его NP> отсортировать У меня получается .1 1.1 2.1 1.1.1 2.1.1 1.1.1.1 1.2.1 .2 1.2 NP> 2.2 1.1.2 1.2.2 ---------- А надо, что было так: .1 1.1 1.1.1 1.1.1.1 2.1.1 NP> 2.1 1.2.1 .2 1.2 1.1.2 2.2 1.2.2 sort { my @fa=split(/\./, $a); my @fb=split(/\./, $b); unshift @fa, '0' while(@fa <@fb); unshift @fb, '0' while(@fa >@fb); for (my $i=0; $i<@fa; $i++) { $fa[$i] eq $fb[$i] and next; return $fa[$i] cmp $fb[$i]; } return 0; } @list; что-то в этом духе. по необходимости заменить cmp на <=> (если надо только цифры) а eq соответственно на == ну и отладитьпотому что я прямо тут написал --- Mutt/1.5.13 (2006-08-11) * Origin: У кошки четыре ноги. "Вход", "Выход", "Земля" и "Питание". (2:5004/75.151) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3926c5ad2164.html, оценка из 5, голосов 10
|