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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Comoderator of RU.CGI.PERL           2:5020/400     21 Feb 2004  14:41:57
 To : milon
 Subject : Moderatorial [+] (was: хитрый splice)
 -------------------------------------------------------------------------------- 
 
 milon  @ Sat, 21 Feb 2004 01:46:48 +0000 (UTC):
 
  m> здраствуй All.
  m> меня посетила такая проблема:
 
  m> есть хеш
  m> %h = (
  m>     'field1' => [a1, ..., aM],
  m>     ...
  m>     'fieldN' => [m1, ..., mM]
  m> );
 
  m> на основании запроса юзверя делается
  m> выборка из этого хеша. результат - во всех
  m> массивах стало меньше значений. вернее
  m> появились значения, которые отображать
  m> не нужно. зная индексы лишних элементов,
  m> написал так:
 
  m> for my $i (@wastes) {
  m>     for my $field (keys %h) {
  m>         splice @{ $h{$field} }, $i, 1;
  m>     }
  m> }
 
  m> плохо...
  m> в смысле: результат работы есть таблица,
  m> столбцы - поля, строки - значения.
  m> полей может быть много, скажем 30.
  m> значений совсем много, скажем >30.
 
  m> ...так вот таблица не выводится :(
  m> браузер подвисает с песочными часами.
  m> если выводить не таблицой, а скажем text/plain,
  m> то получается по разному:
  m> если строк скажем 40, то выводится 20 и всё,
  m> если 20, то выводится 10 и тоже всё - обрывается
  m> на полусло... вообщем пишу вот так:
 
  m> for my $i (@wastes) {
  m>     for my $field (keys %h) {
  m>     #    splice @{ $h{$field} }, $i, 1;
  m>           $h{$field}->[$i] = " ";
  m>     }
  m> }
 
  m> работает, причет быстро, но это же не то...
  m> попробовал копировать собаку в другой массив,
  m> резать копию, а затем затирать оригинал.
  m> ну, просто было подозрение, что splice работает
  m> только с "настоящими" массивами,
  m> а @{ $h{$field} } - не настоящий.
 
  m> my @cp_fields;
  m> for my $i (@wastes) {
  m>     for my $field (keys %h) {
  m>         @cp_fields = @{ $h{$field} };
  m>         splice @cp_fields, $i, 1;
  m>         $h{$field} = \@cp_fields;
  m>     }
  m> }
 
  m> м-да. надо же что-то было делать...
  m> не помогло.
  m> не пойму в чем же проблема.
 
  m> -----------
  m> Apache 2.0
  m> perl 5.8
  m> Linux RH9
 
 Оффтопик.  В RU.PERL.
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5.3
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 хитрый splice   milon   21 Feb 2004 05:46:48 
 Re: хитрый splice   Alexander Onokhov   21 Feb 2004 13:55:47 
 Moderatorial [+] (was: хитрый splice)   Comoderator of RU.CGI.PERL   21 Feb 2004 14:41:57 
Архивное /ru.cgi.perl/114773f2001b9.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional