Полезная информация Жиросжигатели Киев советуем с успехом купить в онлайн режиме в novalady.com.

## 4.5. Iterating Over an Array by Reference

### Problem

You have a reference to an array, and you want to use `foreach` to work with the array's elements.

### Solution

Use `foreach` or `for` to loop over the dereferenced array:

```# iterate over elements of array in \$ARRAYREF
foreach \$item (@\$ARRAYREF) {
# do something with \$item
}

for (\$i = 0; \$i <= \$#\$ARRAYREF; \$i++) {
# do something with \$ARRAYREF->[\$i]
}```

### Discussion

The solutions assume you have a scalar variable containing the array reference. This lets you do things like this:

```@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.````

We could have rewritten the `foreach` loop as a `for` loop like this:

```for (\$i=0; \$i <= \$#\$fruit_ref; \$i++) {
print "\$fruit_ref->[\$i] tastes good in a pie.\n";
}```

Frequently, though, the array reference is the result of a more complex expression. You need to use the `@{` `EXPR` `}` notation to turn the result of the expression back into an array:

```\$namelist{felines} = \@rogue_cats;
foreach \$cat ( @{ \$namelist{felines} } ) {
print "\$cat purrs hypnotically..\n";
}
print "--More--\nYou are controlled.\n";```

Again, we can replace the `foreach` with a `for` loop:

```for (\$i=0; \$i <= \$#{ \$namelist{felines} }; \$i++) {
print "\$namelist{felines}[\$i] purrs hypnotically.\n";
}```