PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 125


4.5. Перебор массива по ссылке

Проблема

Имеется ссылка на массив. Вы хотите использовать foreach для обращения к каждому элементу массива.

Решение

Для перебора разыменованного (dereferenced) массива используется цикл foreach или for:

й Перебор элементов массива SARRAYREF foreach $item(@$ARRAYREF)   { П Сделать что-то с $item

for ($i = 0, $1 <= $#$ARRAYREF, $i++) { й Сделать что-то с $ARARAYREF->[$i]

Комментарий

Приведенное решение предполагает, что у вас имеется скалярная переменная, со­держащая ссылку па массив. Это позволяет делать следующее:

@fruits = (    Apple ,    Blackberry    ), $fruit_ref = \@>fruits, foreach $fruit  (@$fruit_ref)   {

print    $fruit tastes good in a pie \n , }

Apple  tastes  good  in  a  pie. Blackberry  tastes  good   in  a  pie.

Цикл foreach можно переписать в цикле for следующего вида:

for ($1=0, $i <= $#$fruit_ref, $i++) {

print $fruit_ref->[$i] tastes good in a pie \n",


4.6. Выборка уникальных элементов из списка    125

Однако ссылка па массив нередко является результатом более сложного вы­ражения. Для превращения такого результата в массив применяется конструк­ция @{ EXPR }:

$namelist{felines} = \@rogue_cats, foreach Scat ( @{ $namelist{felines} } ) {

print Scat purrs hypnotically \n , } print --More--\nYou are controlled \n

Как и прежде, цикл foreach можно заменшь эквивалентным циклом for:

for ($i=0, $i <= $#{ $namelist{felines} }, $i++) {

print $namelist{felines}[$i] purrs hypnotically \n ,

> Смотри также---------------------------------------------------------------------------------------------

perlref(i) и peillol(l); рецепты 4 4; 11.1.

4.6. Выборка уникальных элементов из списка

Проблема

Требуется удалить из списка повюряющиеся элементы — например, при по­строении списка из файла или на базе выходных данных некоей команды. Рецепт в равно]! мере относится как к удалению дубликатов при вводе, так и в уже запол­ненных массивах.

Решение

Хэш используется для сохранения встречавшихся ранее элементов, а функ­ция keys — для их извлечения. Принятая в Perl концепция истинности позво­лит уменьшить объем программы и ускорить ее работу.




- Начало -  - Назад -  - Вперед -