develooper Front page | perl.perl5.porters | Postings from May 2013

Re: [perl #117947] all XS functions are implicitly :lvalue

Thread Previous
From:
Lukas Mai
Date:
May 13, 2013 19:17
Subject:
Re: [perl #117947] all XS functions are implicitly :lvalue
Message ID:
51913C4E.9020007@gmail.com
On 13.05.2013 14:12, Leon Timmermans wrote:
> On Mon, May 13, 2013 at 1:28 PM, Rafael Garcia-Suarez <rgs@consttype.org> wrote:
>> maxstr is not a method; if you use List::Util::maxstr() instead, it
>> complains as it should:
>>
>> ~§ perl -wle 'use List::Util qw(maxstr); List::Util::maxstr($_ = "hi")
>> = 42; print'
>> Can't modify non-lvalue subroutine call in scalar assignment at -e
>> line 1, near "42;"
>> Execution of -e aborted due to compilation errors.
>>
>> That said, we actually seem to have a problem with XS functions called
>> as methods.
>
> Yeah, the keywords there seems to be "compilation errors". For methods
> we have to detect this at runtime…

Yes, this is about calls that can't be resolved (and rejected) at 
compile time. It affects all method calls but also this:

% perl -wle 'use List::Util qw(maxstr); (\&maxstr)->($_ = "hi") = 42; print'
42

i.e. calls through a reference.


-- 
Lukas Mai <plokinom@gmail.com>

Thread Previous


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