[Boston.pm] perl6 lists

"Greg London" <email-2Ro/Dj86MvDSUeElwK9/[email protected]>
Newsgroups gmane.comp.lang.perl.perl-mongers.boston
Message-ID <[email protected]>
Can't seem to wrap my head around perl6 lists.

They're not arrays. They seem to exist almost as literals.
When I assign a list to an array, it stops acting like a literal list.

This works as expected:
for 1,2,3,4 {say "here is $^first";}
here is 1
here is 2
here is 3
here is 4

THis does not work as expected:
my $otherlist = (11,22,33,44);
for $otherlist {say "here is $^first";}
here is 11 22 33 44;

Calling "flat" on the scalar doesn't change the output.
The only thing that seems to get it to do the right thing is to put "@" in
front of the scalar containing the list.

for @$otherlist {say "here is $^first";}
here is 11
here is 22
here is 33
here is 44

so, I can make a literal list 1,2,3 and loop on it,
and I can loop on an array,
but I can't loop on a scalar with a list in it
and I can't flatten a list inside a scalar.

Is there a rule underlying this behavior that makes it consistent?
Because right now, it seems like a couple of arbitrary rules
enforced to get a particular, but inconsistent, behavior.

Greg
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.