in reply to Why Perl gets confused here?

You have som extra parens.
Here is how the code is being interpreted:
substr(substr($p, 0, 1) = '123', 0, 1) = 'x'; substr((substr($q, 0, 1)) = '123', 0, 1) = 'x';
B::Deparse is your friend.

                All power corrupts, but we need electricity.

Replies are listed 'Best First'.
Re^2: Why Perl gets confused here?
by Anonymous Monk on Oct 26, 2017 at 20:54 UTC
    i dont think extra parens kill lvalues
    $ perl -le 'sub x:lvalue{$a} x="y";print$a' y $ perl -le 'sub x:lvalue{$a} (x)="y";print$a' y
      $ perl -le'sub x:lvalue{$a} print scalar( x="y" );' y $ perl -le'sub x:lvalue{$a} print scalar( (x)="y" );' 1