- RU.PERL ----------------------------------------------------------- RU.PERL -
Msg : #4582 [633]
От : Edward Yudanov 2:5007/11.35 12 сентября 04, 07:40
Кому : Serge Chervjakov 30 сентября 04, 06:44
Тема : Re: sort [?]
-------------------------------------------------------------------------------
Категорически приветствую тебя, Serge Chervjakov!
Как сейчас помню Sat, 11 Sep 2004 19:33:52 +0800 ты писал(а):
EY>> то есть отсортировать сначала по датам, в случае одинаковых дат -- по
EY>> адресам. Подскажите как можно отсортировать файл по такому принципу. У
EY>> меня получается сортировать только по первому числу, но тогда спутаны все
EY>> месяца и по адресам отсортировать не получается :(
SC> Вариантов есть несколько.. первый вариант (неправильный, но когда-то давно
SC> считал его правильным:) ) - сначала отсортировать по последнему (по
SC> адресам),
SC> потом получившееся - по датам. Hекрасиво.
SC> А нормальный вариант - почитать про sort. В блоке втором что указывается?
SC> Фактически - функция сравнения 2 объектов (не важно какой природы - лишь
SC> бы
SC> можно было указать, какой объект "больше" какой "меньше"). Вот исходя из
SC> этого
SC> и построй соответствующий блок (split тебе в нем поможет). Hу а если
SC> серьезно,
SC> то что-нибудь вроде такого:
SC> sub sor
SC> {
SC> my ($adate,$aname,$alname,undef,$aaddr)=split(/ /,$a);
SC> my ($bdate,$bname,$blname,undef,$baddr)=split(/ /,$b);
SC> $adate cmp $bdate || $aaddr cmp $baddr;
SC> }
SC> sort sor @arr;
SC> ну можно еще сделать сортировку адресов правильную - соответственно чуть
SC> придется переписать функцию сравнения...
Спасибо, попробую что-нибудь подобное изобразить...
--
|> Evanescence - Whisper.mp3
--- slrn/0.9.8.0-Edward (Linux)
* Origin: [ RLU #316941 http://fido.khakassia.ru/ ] (2:5007/11.35)