Добрый день.В ходе своей борьбы за оптимизацию просчета массива я обнаружил интересную функцию Perl map(). Судя по инструкции она должна была применять заданное выражение или функцию ко всем элементам списка. Ура !!!! решил я и написал
@tmp = map( s/\)/ / )@tmp ; # удалим )
Perl молча проглотил мой скрипт, но в ответ вернул массив из 8129 1 (единиц) Почесав затылок я заметил соответствие между числом единиц и числом строк исходного массива. Т. е. он заменил каждую строчку массива на результат s///
Как же его образумить ?
> Добрый день.
>
> В ходе своей борьбы за оптимизацию просчета массива я обнаружил
>интересную функцию Perl map(). Судя по инструкции она должна была применять
>заданное выражение или функцию ко всем элементам списка. Ура !!!! решил
>я и написал
>
> @tmp = map( s/\)/ / )@tmp ; # удалим )
>
>
> Perl молча проглотил мой скрипт, но в ответ вернул массив
>из 8129 1 (единиц) Почесав затылок я заметил соответствие между числом
>единиц и числом строк исходного массива. Т. е. он заменил каждую
>строчку массива на результат s///
> Как же его образумить ?
map этого не делает. Она, можно сказать, эквивалент if. Для того, чтобы получить то что тебе надо, используй grep.
@tmp=map{ s/\)//g; +$_} @tmp;греп однако ловчее
однако нет
с грепом та же тема
@area = grep(s/pattern//,@area); - точно работает.