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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : milon                                2:5020/400     21 Feb 2004  05:46:48
 To : All
 Subject : хитрый splice
 -------------------------------------------------------------------------------- 
 
 здраствуй All.
 меня посетила такая проблема:
 
 есть хеш
 %h = (
     'field1' => [a1, ..., aM],
     ...
     'fieldN' => [m1, ..., mM]
 );
 
 на основании запроса юзверя делается
 выборка из этого хеша. результат - во всех
 массивах стало меньше значений. вернее
 появились значения, которые отображать
 не нужно. зная индексы лишних элементов,
 написал так:
 
 for my $i (@wastes) {
     for my $field (keys %h) {
         splice @{ $h{$field} }, $i, 1;
     }
 }
 
 плохо...
 в смысле: результат работы есть таблица,
 столбцы - поля, строки - значения.
 полей может быть много, скажем 30.
 значений совсем много, скажем >30.
 
 ...так вот таблица не выводится :(
 браузер подвисает с песочными часами.
 если выводить не таблицой, а скажем text/plain,
 то получается по разному:
 если строк скажем 40, то выводится 20 и всё,
 если 20, то выводится 10 и тоже всё - обрывается
 на полусло... вообщем пишу вот так:
 
 for my $i (@wastes) {
     for my $field (keys %h) {
     #    splice @{ $h{$field} }, $i, 1;
           $h{$field}->[$i] = " ";
     }
 }
 
 работает, причет быстро, но это же не то...
 попробовал копировать собаку в другой массив,
 резать копию, а затем затирать оригинал.
 ну, просто было подозрение, что splice работает
 только с "настоящими" массивами,
 а @{ $h{$field} } - не настоящий.
 
 my @cp_fields;
 for my $i (@wastes) {
     for my $field (keys %h) {
         @cp_fields = @{ $h{$field} };
         splice @cp_fields, $i, 1;
         $h{$field} = \@cp_fields;
     }
 }
 
 м-да. надо же что-то было делать...
 не помогло.
 не пойму в чем же проблема.
 
 -----------
 Apache 2.0
 perl 5.8
 Linux RH9
 --- ifmail v.2.15dev5.3
  * Origin: Svit Online (post does not reflect views of Golden Tele (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/16795f738832d.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional