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] }
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"; }
perlref
(1) and
perllol(1); Chapter 4 of Programming
Perl; Section 11.1; Section 4.4
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.