|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander Onokhov 2:5020/400 21 Feb 2004 13:55:47 To : milon Subject : Re: хитрый splice -------------------------------------------------------------------------------- "milon" <milon@svitonline.com> writes: > есть хеш > %h = ( > 'field1' => [a1, ..., aM], > ... > 'fieldN' => [m1, ..., mM] > ); > > зная индексы лишних элементов, > написал так: > > for my $i (@wastes) { > for my $field (keys %h) { > splice @{ $h{$field} }, $i, 1; > } > } > > плохо... после каждого splice у тебя массив становится другим, в нём меняются индексы у элементов. Hапример а4 после удаления второго элемента ста- новится а3. Так что, либо корректируй свой @wastes после каждого splice, либо делай по другому. Hа мой взгляд проще сделать так: foreach (keys %h) { @{$h{$_}}[@wastes] = () x @wastes; @{$h{$_}} = grep{defined} @{$h{$_}}; } -- Alexander --- ifmail v.2.15dev5.3 * Origin: What me? (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/102296223d8ee.html, оценка из 5, голосов 10
|