On 1/11/19 11:45 AM, Bruce Gray wrote:
Short answer: use `%hash{$var}`, not `%hash<$var>`.

When they are not in position to be less-than and greater-than comparison 
operators, the pair of left and right angle brackets are a circumfix operator 
that work like Perl 5’s “quote word” op: `qw()`.

In Perl 6, `<>` are used a lot, including as a shortcut in hash lookups.
The full form for looking up the constant key `acme` in %Vendors is to use 
curly braces and to*quote*  the key (single or double quote), or have the key 
in a variable:
        say %Vendors{'acme’};
        say %Vendors{"acme”};
        my $k = ‘acme’;
        say %Vendors{$k};
The shortcut of replacing the curly braces with angle brackets only works for 
constant strings:
        say %Vendors<acme>;

Advanced note: Since `<>` produce a*list*  of quoted words, you can use them to 
extract multiple values from a hash:
        my ( $acct, $cn ) = %Vendors{"acme"}{"AccountNo", "ContactName”};
        my ( $acct, $cn ) = %Vendors<acme><AccountNo ContactName>;
        say [:$acct, :$cn].perl;


Yes it does help.  I copied it to my hash Keepers file.  Thank you!

Reply via email to