1. Существует примерно такая структура:
Код | @in = ( value1 => {NAME => 'Name1', GROUP => 'both'}, value2 => {NAME => 'Name2', GROUP => 'both'}, value3 => {NAME => 'Name3', GROUP => 'other'}, value4 => {NAME => 'Name4', GROUP => 'both'} value5 => {NAME => 'Name5', GROUP => 'other'}, value6 => {NAME => 'Name6', GROUP => 'other'}, value7 => {NAME => 'Name7', GROUP => 'both'}, );
|
2. Необходимо средствами функции 'grep' создать новый массив следующего содержания:
Код | @out = ( value1 => {NAME => 'Name1', GROUP => 'both'}, value2 => {NAME => 'Name2', GROUP => 'both'}, value4 => {NAME => 'Name4', GROUP => 'both'} value7 => {NAME => 'Name7', GROUP => 'both'}, );
|
Иными словами, убрать все элементы, которые содержат $_->{'GROUP} eq 'both' и стоящий перед ним элемент массива.
Итак, немного помучался, получилось вот что:
Код | push @out, grep { /^\w+?$/ or $_->{'GROUP'} eq 'both' } @in;
|
Но в этом случае получается такая структура:
Код | @out = ( value1 => {NAME => 'Name1', GROUP => 'both'}, value2 => {NAME => 'Name2', GROUP => 'both'}, value3, value4 => {NAME => 'Name4', GROUP => 'both'} value5, value6, value7 => {NAME => 'Name7', GROUP => 'both'}, );
|
Как убрать 'value3', 'value5' и 'value6'? |