|
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) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/16795f738832d.html, оценка из 5, голосов 10
|