develooper Front page | perl.perl6.users | Postings from September 2017

Re: Need append help

Thread Previous | Thread Next
From:
Brandon Allbery
Date:
September 29, 2017 19:41
Subject:
Re: Need append help
Message ID:
CAKFCL4ULPepSdZa=+TBVQrZjaU-zriSj4iU_cnDFbdo6oCU-9g@mail.gmail.com
On Fri, Sep 29, 2017 at 3:27 PM, ToddAndMargo <ToddAndMargo@zoho.com> wrote:

> I do not understand.  :'(
>

There's not enough syntax to go around, so perl 6 has to use spaces
sometimes to figure out what you want.


> $ perl6 -e 'my $x="abc"; $x[R~]= "yyz"; say $x;'
> ===SORRY!=== Error while compiling -e
> Missing required term after infix
>

I explained this one earlier. Things would go faster if you read entire
messages.

The sequece `$x[` could potentially mean that $x is an array stored in a
scalar variable, and you are asking for a particular item from the array.
Or it could mean the start of a complex operator to be applied to $x. You
need a space to tell it which you intend: without the space it sees the
indexing operation, without it sees the complex operator.

In this case, the complex operator is composed of a basic operator '~'
(string concatenation), modified twice: once with the reversing
metaoperator (Rop), and a second time with the in-place assigment operator
(postfix =). Just as you need to use parentheses in `2 + 3 * 5` if you want
it to be (2 + 3) * 5 instead of 2 + (3 * 5), you need braces to tell it how
to combine these special operators --- and you must *not* have a space
before the postfix =. Which is why you got this error:


> $ perl6 -e 'my $x="abc"; $x [R~] = "yyz"; say $x;'
> ===SORRY!=== Error while compiling -e
> Preceding context expects a term, but found infix = instead


With the space before it, it is no longer a modifier for the reversed
concatenation [R~] but a standalone assignment operator, which can't happen
there because it already has an operator [R~] so now it needs to see a term
(expression, roughly).

-- 
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About