|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Yury Kopyl 2:5020/400 25 Feb 2004 22:21:06 To : milon Subject : Re: hard sort -------------------------------------------------------------------------------- milon -> "Re: hard sort" : m> "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>> список не сортируется. YK>> use strcit + use warnings - $@ ? m> в смысле? m> ошибок нет - $@ чист. m> use strict; m> -w все как надо. m> мож чо в $query не так. m> подозреваю, что $a и $b, в eval не те, как-то он их не видит, что-ли. можно попробовать заэскейпить, а можно сделать след образом: @sorted_indexes = sort {cmp($a,$b)} @indexes; sub cmp{ my ($a,$b)=@_; my $str='return '.q~ $ref[0]->[$a] cmp $ref[0]->$b || $ref[1]->[$a] cmp $ref[1]->$b ~; eval $str; } Yury Kopyl aka hrg | http://id.totem.ru | "Спам придумали боги в отместку за наши молитвы." --- ifmail v.2.15dev5.3 * Origin: IAC Samara-Internet, Ltd. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/10277d36abe37.html, оценка из 5, голосов 10
|