Hi,
I'm trying to create a one-element array containing a hash. I eventually
managed to do this from the REPL, but when I create a script containing the
same commands, it doesn't work.
$ cat test.p6
my %h = (y => 1, x => 1);
say [item %h].elems;
say [item %h][0].WHAT;
$ perl6 test.p6
2
(Pair)
$ cat test.p6 | perl6
> my %h = (y => 1, x => 1);
("x" => 1, "y" => 1).hash
> say [item %h].elems;
1
> say [item %h][0].WHAT;
(Hash)
>
$ perl6 -v
This is perl6 version 2014.04 built on parrot 6.1.0 revision 0
`cat test.p6 | perl6` does what I expect it to, but `perl6 test.p6` seems
to be flattening the hash into the array despite the 'item'.
Is this a bug, or am I missing something? (I don't claim much understanding
of how this *should* work, but getting two different behaviours feels
wrong.)
On a whim, I tried to replace 'item %h' with '%h.item', and both methods of
execution now give the results I was expecting, i.e. "1" and "(Hash)".