Markus Laker (>):
> Scalar variables interpolate, but array and hash elements don't:
>
> m...@edward:~$ perl6 -e 'my $a = 1; say "$a"'
> 1
> m...@edward:~$ perl6 -e 'my @a = 1; say "@a[0]"'
> @a[0]
> m...@edward:~$ perl6 -e 'my @a = 1; say "@a[]"'
> @a[]
> m...@edward:~$ perl6 -e 'my %h = (one => 1); say %h<one>'
> 1
> m...@edward:~$ perl6 -e 'my %h = (one => 1); say %h{"one"}'
> 1
> m...@edward:~$ perl6 -e 'my %h = (one => 1); say "%h<one>"'
> %h<one>
> m...@edward:~$ perl6 -e 'my %h = (one => 1); say "%h{"one"}"'
> %hone

This is an oft-reported TODO, but one that's stalling on other future
improvements to the quote parser. In the meantime, you can interpolate
arrays and hashes through closures.

$ perl6 -e 'my @a = 1; say "{...@a[0]}"'
1
$ perl6 -e 'my @a = 1; say "{...@a}"'
1
$ perl6 -e 'my @a = 1,2,3; say "{...@a}"'
1 2 3
$ perl6 -e 'my %h = one => 1; say "{%h}"'
one     1

$ perl6 -e 'my %h = one => 1; say "{%h<one>}"'
1
$ perl6 -e 'my %h = one => 1; say "{%h{"one"}}"'
1

HTH,
// Carl

Reply via email to