On Fri, Sep 29, 2017 at 3:27 PM, ToddAndMargo <toddandma...@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 allber...@gmail.com ballb...@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net