Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Отсортировать не могу   Nikolay Pichtin   10 Dec 2006 13:34:03 
 Отсортировать не могу   Dmitry E. Oboukhov   11 Dec 2006 03:35:05 
 Re: Отсортировать не могу   Nikolay Pichtin   13 Dec 2006 21:14:51 
 Отсортировать не могу   Dmitry E. Oboukhov   14 Dec 2006 19:21:36 
Архивное /ru.perl/3926c5ad2164.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional