On 2019-12-04 02:31, Simon Proctor wrote:
You're using doubles quotes for the string you're passing to Raku.

This means the Shell will do variable interpolation. So it see's "my $map = Map.new()" and puts the value of it's variable $map in their.

But it doesn't exist. So Raku gets "my = Map.new()" (Note the space where $map was). And complains. (You can see that in the error).

I'd advise *always* suing single quotes to pass strings into Raku on the command line. If you need single quotes in your code use q[] instead.

So :

p6 'my $map = Map.new("a", 1, "b", 2); say $map{"a"}; say $map{ "a", "b" };'

Should work just fine.

%e := Map.new binds %e to the Map if you did %e = Map.new it will treat the Map as the first element in a list and probably complain.

On the other hand $e = Map.new is assigning to a Scalar so it doesn't expect to be taking a list of values.

If that makes sense?

On Wed, 4 Dec 2019 at 10:22, ToddAndMargo via perl6-users <perl6-us...@perl.org <mailto:perl6-us...@perl.org>> wrote:

    Hi All,

    I am going through the examples on
    https://docs.perl6.org/type/Map.html

    $ p6 "my $map = Map.new('a', 1, 'b', 2); say $map{'a'}; say $map{ 'a',
    'b' };"
    ===SORRY!=== Error while compiling -e
    Malformed my
    at -e:1
    ------> my⏏  = Map.new('a', 1, 'b', 2); say {'a'};

    What the heck is a 'Malformed my"?  I copied and pasted
    from the second set of examples.

    And why is the first example:
           %e := Map.new
    and the second example
           $e = Map.new
    ?

    Many thanks,
    -T



--
Simon Proctor
Cognoscite aliquid novum cotidie

http://www.khanate.co.uk/

Ah Ha!  Thank you!

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to