It's elementary for Perl that @arrays and %hashes are flattened in list context, not only in the case of a foreach (LIST), but whenever the docs talk about "LIST" as parameter.
from perldata#List value constructors
LISTs do automatic interpolation of sublists. That is, when a LIST is evaluated, each element of the list is evaluated in list context, and the resulting list value is interpolated into LIST just as if each individual element were a member of LIST. Thus arrays and hashes lose their identity in a LIST--the listfor instance(@foo,@bar,&SomeSub,%glarch)
contains all the elements of @foo followed by all the elements of @bar, followed by all the elements returned by the subroutine named SomeSub called in list context, followed by the key/value pairs of %glarch.
DB<105> @a=1..3 => (1, 2, 3) DB<106> @b=a..c => ("a", "b", "c") DB<107> @c=(@a,@b) => (1, 2, 3, "a", "b", "c")
HTH! =)
Cheers Rolf
( addicted to the Perl Programming Language)
In reply to Re^3: Passing multiple arrays to foreach loop (list flattening)
by LanX
in thread Passing multiple arrays to foreach loop
by deshdaaz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |