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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : milon                                2:5020/400     26 Feb 2004  01:55:26
 To : Yury Kopyl
 Subject : Re: hard sort
 -------------------------------------------------------------------------------- 
 
 
 "Yury Kopyl" to "milon"
 
  m>>> здесь $N - количество записей в одном поле или количество строк,
  m>>> коли угодно, а $ref[$i] = \@{ $h{"field$i"} } - ссылка на анонимный
  m>>> массив - их то и может быть сколько угодно.
 
  YK>>>  eval?
 
  m>> дык пробовал я.
  m>> создаю строку - суть контент подпрограммы сортировки.
  m>> типа:
 
  m>> $query = <<'Q';
  m>>     $ref[0]->[$a] cmp $ref[0]->$b         ||
  m>>     $ref[1]->[$a] cmp $ref[1]->$b
  m>> Q
 
  m>> а потом пишу:
 
  m>> @sorted_indexes = sort {
  m>>     eval $query;
  m>> } (0 .. $N);
 
  m>> работает, но неправильно.
  m>> т.е. ошибок нет,  а результат 0..$N.
  m>> список не сортируется.
 
 m> подозреваю, что $a и $b, в eval не те, как-то он их не видит, что-ли.
 
 YK> можно попробовать заэскейпить, а можно сделать след образом:
 YK>
 YK> @sorted_indexes = sort {cmp($a,$b)} @indexes;
 YK>
 YK>
 YK> sub cmp{
 YK>     my ($a,$b)=@_;
 YK>
 YK>     my $str='return '.q~
 YK>     $ref[0]->[$a] cmp $ref[0]->$b         ||
 YK>     $ref[1]->[$a] cmp $ref[1]->$b
 YK>     ~;
 YK>
 YK>     eval $str;
 YK> }
 
 так катит. даже без return.
 выходит дело в этих почти глобальных переменных?
 а можна не делать отдельную функцию?
 а то уменя это и так sub  - получится
 функция в функции :)
 
 пробую:
 
 @sorted_indexes = sort {
 my ($aa,$bb);
 ($aa, $bb)=($a,$b);
 eval $str;
 #где $str - это
 #$ref[0]->[$aa] cmp $ref[0]->[$bb]         ||
 #$ref[1]->[$aa] cmp $ref[1]->[$bb]
 } @indexes;
 
 не работает...
 --- ifmail v.2.15dev5.3
  * Origin: Svit Online (post does not reflect views of Golden Tele (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 hard sort   milon   24 Feb 2004 01:05:56 
 Re: hard sort   Yury Kopyl   24 Feb 2004 10:58:42 
 Re: hard sort   milon   25 Feb 2004 16:18:34 
 Re: hard sort   Yury Kopyl   25 Feb 2004 18:37:00 
 Re: hard sort   milon   25 Feb 2004 20:45:45 
 Re: hard sort   Yury Kopyl   25 Feb 2004 22:21:06 
 Re: hard sort   milon   26 Feb 2004 01:55:26 
Архивное /ru.perl/167955f60f8ff.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional