This behaviour looks wrong to me:
m...@edward:~/perl/6$ cat ap1 #!/home/msl/bin/perl6 my @a = <blue light hazard>; my $p = @a.perl; say "\...@a: {...@a.elems} elements: $p"; say '@a[0]: ', @a[0]; my @b = eval $p; say "\...@b: {...@b.elems} elements: $p"; say '@b[0]: ', @b[0]; say '@b[0][0]: ', @b[0][0]; m...@edward:~/perl/6$ ./ap1 @a: 3 elements: ["blue", "light", "hazard"] @a[0]: blue @b: 1 elements: ["blue", "light", "hazard"] @b[0]: blue light hazard @b[0][0]: blue m...@edward:~/perl/6$ perl6 -v This is Rakudo Perl 6, revision 34744 built on parrot 0.8.2-devel for i486-linux-gnu-thread-multi. Copyright 2006-2008, The Perl Foundation. m...@edward:~/perl/6$ Because C<@a.perl> returns a string surrounded in square brackets, rather than round brackets, C<eval> produces a list containing a single element: we get one extra, unwanted level of indirection. If C<@a.perl> were to return a string surrounded in round brackets, this problem would be solved: m...@edward:~/perl/6$ cat ap2 #!/home/msl/bin/perl6 my $p = '("blue", "light", "hazard")'; my @c = eval $p; say "\...@c: {...@c.elems} elements: ", @c.perl; say '@c[0]: ', @c[0]; my $c = eval $p; say "\$c: {$c.elems} elements: ", $c.perl; say '$c[0]: ', $c[0]; m...@edward:~/perl/6$ ./ap2 @c: 3 elements: ["blue", "light", "hazard"] @c[0]: blue $c: 3 elements: ["blue", "light", "hazard"] $c[0]: blue m...@edward:~/perl/6$ Is Rakudo's behaviour correct here? Markus